void RenderCache::render(const Point& basePos, const Rect& clipper) { Rect displayArea(System::getSingleton().getRenderer()->getRect()); Rect custClipper; const Rect* finalClipper; Rect finalRect; // Send all cached images to renderer. for(ImageryList::const_iterator image = d_cachedImages.begin(); image != d_cachedImages.end(); ++image) { if ((*image).usingCustomClipper) { custClipper = (*image).customClipper; custClipper.offset(basePos); custClipper = (*image).clipToDisplay ? displayArea.getIntersection(custClipper) : clipper.getIntersection(custClipper); finalClipper = &custClipper; } else { finalClipper = (*image).clipToDisplay ? &displayArea : &clipper; } finalRect = (*image).target_area; finalRect.offset(basePos); assert((*image).source_image); (*image).source_image->draw(finalRect, *finalClipper, (*image).colours); } // send all cached texts to renderer. for(TextList::const_iterator text = d_cachedTexts.begin(); text != d_cachedTexts.end(); ++text) { if ((*text).usingCustomClipper) { custClipper = (*text).customClipper; custClipper.offset(basePos); custClipper = (*text).clipToDisplay ? displayArea.getIntersection(custClipper) : clipper.getIntersection(custClipper); finalClipper = &custClipper; } else { finalClipper = (*text).clipToDisplay ? &displayArea : &clipper; } finalRect = (*text).target_area; finalRect.offset(basePos); assert((*text).source_font); (*text).source_font->drawText((*text).text, finalRect, *finalClipper, (*text).formatting, (*text).colours); } }
Common::Rect GfxCoordAdjuster16::pictureGetDisplayArea() { Common::Rect displayArea(_ports->getPort()->rect.right, _ports->getPort()->rect.bottom); displayArea.moveTo(_ports->getPort()->left, _ports->getPort()->top); return displayArea; }