00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef ScalerGump_H
00020 #define ScalerGump_H
00021
00022 #include "DesktopGump.h"
00023 #include <vector>
00024 class RenderSurface;
00025 struct Texture;
00026
00027 namespace Pentagram {
00028 class Scaler;
00029 };
00030
00031 class ScalerGump : public DesktopGump
00032 {
00033 public:
00034 ENABLE_RUNTIME_CLASSTYPE();
00035
00044 ScalerGump(sint32 x, sint32 y, sint32 width, sint32 height);
00045 virtual ~ScalerGump(void);
00046
00047 virtual void Paint(RenderSurface* surf, sint32 lerp_factor, bool scaled);
00048 virtual void RenderSurfaceChanged();
00049 virtual void ParentToGump(int &px, int &py,
00050 PointRoundDir r = ROUND_TOPLEFT);
00051 virtual void GumpToParent(int &gx, int &gy,
00052 PointRoundDir r = ROUND_TOPLEFT);
00053
00054 void GetScaledSize(sint32 &sw, sint32 &sh) const { sw = swidth1; sh = sheight1; }
00055 void ChangeScaler(std::string scalername, int scalex, int scaley);
00056
00057 protected:
00058 int swidth1;
00059 int sheight1;
00060 const Pentagram::Scaler *scaler1;
00061 RenderSurface *buffer1;
00062
00063 int swidth2;
00064 int sheight2;
00065 const Pentagram::Scaler *scaler2;
00066 RenderSurface *buffer2;
00067
00068 sint32 width;
00069 sint32 height;
00070
00071 private:
00072 void SetupScalers();
00073
00074 void DoScalerBlit(Texture* src, int swidth, int sheight, RenderSurface *dest, int dwidth, int dheight, const Pentagram::Scaler *scaler);
00075
00076 static void ConCmd_changeScaler(const Console::ArgvType &argv);
00077 static void ConCmd_listScalers(const Console::ArgvType &argv);
00078
00079 };
00080
00081 #endif