/* ----------------------------------------------------------------------------- You are reqiured to use AknIconUtils since icons can be used in different sizes, thus usually Y-Browser asks the icon with TSize(0,0) and re-sizes it later as required, when using other methods than AknIconUtils, the resizing will not work correctly ---------------------------------------------------------------------------- */ CGulIcon* CYBRecognizer1::GetListIconL(const TSize& aIconsize,const TDesC& aFileName, TInt aImg, TInt aMsk) { CFbsBitmap* FrameMsk(NULL); CFbsBitmap* FrameImg(NULL); if(aMsk >= 0) { AknIconUtils::CreateIconL(FrameImg,FrameMsk,aFileName,aImg,aMsk); } else { FrameImg = AknIconUtils::CreateIconL(aFileName, aImg); } if(FrameImg) { // do not resize if the size is TSize(0,0) if(aIconsize.iHeight > 0 && aIconsize.iWidth > 0) { AknIconUtils::SetSize(FrameImg,aIconsize,EAspectRatioPreserved); if(FrameMsk) { AknIconUtils::SetSize(FrameMsk,aIconsize,EAspectRatioPreserved); } } } return CGulIcon::NewL(FrameImg,FrameMsk); }
/* ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- */ CGulIcon* CTraceContainer::LoadImageL(const TDesC& aFileName, TInt aImg, TInt aMsk,const TSize& aSize,TScaleMode aAspect) { CFbsBitmap* FrameImg(NULL); CFbsBitmap* FrameMsk(NULL); TInt MaskId(aMsk); TInt UseIndex(aImg); if(AknIconUtils::IsMifFile(aFileName)) { AknIconUtils::ValidateLogicalAppIconId (aFileName, UseIndex, MaskId); } AknIconUtils::CreateIconL(FrameImg, FrameMsk, aFileName, UseIndex, MaskId); if(aAspect) { AknIconUtils::SetSize(FrameImg,aSize,aAspect); AknIconUtils::SetSize(FrameMsk,aSize,aAspect); } else { AknIconUtils::SetSize(FrameImg,aSize,aAspect); AknIconUtils::SetSize(FrameMsk,aSize,aAspect); } CGulIcon* Ret = CGulIcon::NewL(FrameImg,FrameMsk); return Ret; }
// загрузить рамку из директории void LoadTheme(FrameThemeObj& fto) { // if( !thm_path && !*thm_path ) // return; // // // убираем '/' в конце, если нужно // thmPath = thm_path; // if( thmPath[thmPath.length()-1] == '/' ) // thmPath.resize(thmPath.length()-1); // // std::string path(thmPath); // path += "/frame.png"; // // framImg.read(path); // LoadThemeFrame(framImg, path.c_str(), mdPlc); // // path = thmPath; // path += "/vframe.png"; // // vframImg.read(path); // LoadThemeFrame(vframImg, path.c_str(), mdPlc); Rect md_plc = fto.Placement(); fs::path pth = Project::FindThemePath(Project::ThemeOrDef(fto.Theme())); LoadThemeFrame(FrameImg(fto), (pth / "frame.png").string(), md_plc); LoadThemeFrame(VFrameImg(fto), (pth / "vframe.png").string(), md_plc); }
/* ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- */ CGulIcon* CMySplashScreen::LoadImageL(const TDesC& aFileName, TInt aImg, TInt aMsk,const TSize& aSize) { CFbsBitmap* FrameImg(NULL); CFbsBitmap* FrameMsk(NULL); AknIconUtils::CreateIconL(FrameImg, FrameMsk, aFileName, aImg, aMsk); AknIconUtils::SetSize(FrameImg,aSize,EAspectRatioPreservedAndUnusedSpaceRemoved); AknIconUtils::SetSize(FrameMsk,aSize,EAspectRatioPreservedAndUnusedSpaceRemoved); CGulIcon* Ret = CGulIcon::NewL(FrameImg,FrameMsk); return Ret; }
void Composite(Magick::Image& canv_img, const Magick::Image& obj_img, FrameThemeObj& fto) { Magick::Image img; Rect mdPlc = fto.Placement(); Point sz = mdPlc.Size(); ZoomImage(img, obj_img, sz.x, sz.y); // сначала скопируем маску в изображение, // которое накладываем, используя опять же composite(CopyOpacityCompositeOp) // 1 включаем прозрачность img.matte(true); // 2 копируем прозрачность с рамки img.composite(VFrameImg(fto), 0, 0, MagickLib::CopyOpacityCompositeOp); // 3 накладываем результат c альфа-блэндингом (OverCompositeOp) canv_img.composite(FrameImg(fto), mdPlc.lft, mdPlc.top, MagickLib::OverCompositeOp); canv_img.composite(img, mdPlc.lft, mdPlc.top, MagickLib::OverCompositeOp); }
/* ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ void CMainContainer::AddIconL(CArrayPtr<CGulIcon>* aIcon,const TSize& aIconsize,const TDesC& aFileName, TInt aImg, TInt aMsk) { CFbsBitmap* FrameImg(NULL); CFbsBitmap* FrameMsk(NULL); TInt BgIndex(aImg),BgMask(aMsk); if(AknIconUtils::IsMifFile(aFileName)) { AknIconUtils::ValidateLogicalAppIconId(aFileName, BgIndex,BgMask); } AknIconUtils::CreateIconL(FrameImg, FrameMsk, aFileName,BgIndex,BgMask); if(aIconsize.iHeight > 0 && aIconsize.iWidth > 0) { AknIconUtils::SetSize(FrameImg,aIconsize,EAspectRatioPreserved); AknIconUtils::SetSize(FrameMsk,aIconsize,EAspectRatioPreserved); } aIcon->AppendL(CGulIcon::NewL(FrameImg,FrameMsk)); }