vector.h

来自「jpeg 2000 压缩算法源代码 核心ebcot」· C头文件 代码 · 共 88 行

H
88
字号
ase TYPE_FLOAT:
			pImgComData=new CImgComDataFloat(nComBits,nComNumber,coordImgComOrg,dwImgComWidth,dwImgComHeight);
			break;
		default:
			{
				printf("image component data type unknown!\n");
				return 0;

			}
		}

		pImgSrc->SetImgComData(nComNumber,pImgComData);

		for (nTileNumber=0;nTileNumber<nTileNums;nTileNumber++)
		{
			pTileComData=&m_pImgTilingData[nTileNumber].GetTileComData(nComNumber);
			ConvertTileComData(*pTileComData,eDataType);

			nTCWidth=pTileComData->GetWidth();
			nTCHeight=pTileComData->GetHeight();

            nTCOffset=pTileComData->GetTileComOffset();

			pDataBlk=pTileComData->GetData();

			if (!pbCompSigned[nComNumber])
				{
					nDCShift=(1<<(pnCompBits[nComNumber]-1));
					IDCShift(pTileComData->GetTileComData(),nDCShift);


				}

		


			pImgComData->SetDataCopy(pDataBlk,nTCOffset,nTCWidth,nTCHeight);

		
		}
		

	}
	return pImgSrc;

}

void CTiler::DCShift(CDataBlk *pDataBlk,int nShift)
{
	int nWidth,nHeight;
	nWidth=pDataBlk->GetBlkWidth();
	nHeight=pDataBlk->GetBlkHeight();

	int *pData=(int *)pDataBlk->GetData();

	int i,j;

	for (i=0;i<nHeight;i++)
		for (j=0;j<nWidth;j++)
		{
			pData[i*nWidth+j]-=nShift;

		}



}

void CTiler::IDCShift(CDataBlk *pDataBlk, int nShift)
{
	int nWidth,nHeight;
	nWidth=pDataBlk->GetBlkWidth();
	nHeight=pDataBlk->GetBlkHeight();

	int *pData=(int *)pDataBlk->GetData();

	int i,j;

	for (i=0;i<nHeight;i++)
		for (j=0;j<nWidth;j++)
		{
			pData[i*nWidth+j]+=nShift;

		}


}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?