#include #include #include #include DIB24 &DIB24::operator=(const DIB24 &image) { PureDevice pureDevice; RGB888 rgb888; pureDevice.screenDevice(); create(image.width(),image.height(),pureDevice); for(int row=0;row>3)*(LONG)desiredHeight; if(imageExtent==(LONG)desiredWidth*(LONG)desiredHeight)return; else desiredWidth=(WORD)(imageExtent/(LONG)desiredHeight); someBitmapInfo.width(desiredWidth); } bool DIB24::setAt(DWORD row,DWORD col,JPGImage &jpgImage) { DWORD srcWidth; DWORD srcHeight; DWORD dstWidth; DWORD dstHeight; RGB888 *ptrSrcCol; RGB888 *ptrDstCol; if(!isOkay())return false; srcWidth=jpgImage.width(); srcHeight=jpgImage.height(); dstWidth=mBitmapInfo.width(); dstHeight=mBitmapInfo.height()<0?-mBitmapInfo.height():mBitmapInfo.height(); for(int srcRow=0,dstRow=row;srcRowheight())firstPoint.y(height()); if(firstPoint.x()>width())firstPoint.x(width()); if(secondPoint.y()>height())secondPoint.y(height()); if(secondPoint.x()>width())secondPoint.x(width()); xRunning=(LONG)firstPoint.x()<<0x10; yRunning=(LONG)firstPoint.y()<<0x10; if(secondPoint.x()>0x10,xRunning>>0x10,rgb888); xRunning-=xDelta; yRunning-=yDelta; } } else if(-1==xDir&&1==yDir) { for(short stepIndex=0;stepIndex>0x10,xRunning>>0x10,rgb888); xRunning-=xDelta; yRunning+=yDelta; } } else if(1==xDir&&-1==yDir) { for(short itemIndex=0;itemIndex>0x10,xRunning>>0x10,rgb888); xRunning+=xDelta; yRunning-=yDelta; } } else if(1==xDir&&1==yDir) { for(short itemIndex=0;itemIndex>0x10,xRunning>>0x10,rgb888); xRunning+=xDelta; yRunning+=yDelta; } } return true; } bool DIB24::copyBits(ResBitmap &resBitmap) { if(BitmapInfo::Bit8!=resBitmap.bitCount())return false; // add code to handle other bitCounts BYTE *pData=resBitmap.ptrData(); int srcWidth=resBitmap.width(); int srcHeight=resBitmap.height(); int dstWidth=width(); int dstHeight=height(); for(int col=0;col=srcHeight)continue; if(col>=srcWidth)continue; RGBColor color=resBitmap.paletteEntry(pData[row*dstWidth+col]); RGB888 dibColor(color.red(),color.green(),color.blue()); setAt(row,col,dibColor); } } return true; }