MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / drawScaledImage

Method drawScaledImage

framework/render/gl20/ogl_2_0_renderer.cpp:775–825  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

773 drawScaledImage(image, position, size, scaler);
774 }
775 void drawScaledImage(sp<Image> image, Vec2<float> position, Vec2<float> size,
776 Scaler scaler = Scaler::Linear, Colour tint = {255, 255, 255, 255})
777 {
778
779 sp<RGBImage> rgbImage = std::dynamic_pointer_cast<RGBImage>(image);
780 if (rgbImage)
781 {
782 GLRGBImage *img = dynamic_cast<GLRGBImage *>(rgbImage->rendererPrivateData.get());
783 if (!img)
784 {
785 img = new GLRGBImage(rgbImage, this);
786 image->rendererPrivateData.reset(img);
787 }
788 this->drawRgb(*img, position, size, scaler, {0, 0}, 0, tint);
789 return;
790 }
791
792 sp<PaletteImage> paletteImage = std::dynamic_pointer_cast<PaletteImage>(image);
793 if (paletteImage)
794 {
795 GLPaletteImage *img =
796 dynamic_cast<GLPaletteImage *>(paletteImage->rendererPrivateData.get());
797 if (!img)
798 {
799 img = new GLPaletteImage(paletteImage, this);
800 image->rendererPrivateData.reset(img);
801 }
802 if (scaler != Scaler::Nearest)
803 {
804 // blending indices doesn't make sense. You'll have to render
805 // it to an RGB surface then scale that
806 LogError("Only nearest scaler is supported on paletted images");
807 }
808 this->drawPalette(*img, position, size, tint);
809 return;
810 }
811
812 sp<Surface> surface = std::dynamic_pointer_cast<Surface>(image);
813 if (surface)
814 {
815 FBOData *fbo = dynamic_cast<FBOData *>(surface->rendererPrivateData.get());
816 if (!fbo)
817 {
818 fbo = new FBOData(image->size, this);
819 image->rendererPrivateData.reset(fbo);
820 }
821 this->drawSurface(*fbo, position, size, scaler, tint);
822 return;
823 }
824 LogError("Unsupported image type");
825 }
826
827 void drawTinted(sp<Image> i, Vec2<float> position, Colour tint) override
828 {

Callers

nothing calls this directly

Calls 5

drawRgbMethod · 0.95
drawPaletteMethod · 0.95
drawSurfaceMethod · 0.95
getMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected