void CFilterColorizeEntry::GetImage (const CCompositeImageSelector &Selector, CObjectImageArray *retImage) // GetImage // // Fills in the image { // Null case if (m_pSource == NULL) { *retImage = EMPTY_IMAGE; return; } // Get the source image (which we want to colorize) CObjectImageArray Source; m_pSource->GetImage(Selector, &Source); const RECT &rcSource = Source.GetImageRect(); CG32bitImage &SourceImage = Source.GetImage(NULL_STR); int cxWidth = RectWidth(rcSource); int cyHeight = RectHeight(rcSource); if (!Source.IsLoaded() || cxWidth == 0 || cyHeight == 0) { *retImage = EMPTY_IMAGE; return; } // Create the destination image CG32bitImage *pDest = new CG32bitImage; pDest->Create(cxWidth, cyHeight, SourceImage.GetAlphaType()); // Blt the to the destination with colorization CGDraw::CopyColorize(*pDest, 0, 0, SourceImage, rcSource.left, rcSource.top, cxWidth, cyHeight, (REALPIXEL)m_dwHue, (REALPIXEL)m_dwSaturation / 100.0); // Initialize an image RECT rcFinalRect; rcFinalRect.left = 0; rcFinalRect.top = 0; rcFinalRect.right = cxWidth; rcFinalRect.bottom = cyHeight; CObjectImageArray Comp; Comp.Init(pDest, rcFinalRect, 0, 0, true); // Done retImage->TakeHandoff(Comp); }