Font: Add missing RGSS2+ props basic plumbing (and bind most in MRI)
No core implementations yet for shadow and outline color.
This commit is contained in:
		
							parent
							
								
									36eea09c7e
								
							
						
					
					
						commit
						9003f9a435
					
				
					 3 changed files with 124 additions and 22 deletions
				
			
		| 
						 | 
				
			
			@ -61,6 +61,11 @@ RB_METHOD(fontInitialize)
 | 
			
		|||
	f->setColor(new Color(*f->getColor()));
 | 
			
		||||
	wrapProperty(self, f->getColor(), "color", ColorType);
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
	f->setOutColor(new Color(*f->getOutColor()));
 | 
			
		||||
	wrapProperty(self, f->getOutColor(), "out_color", ColorType);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if (NIL_P(name))
 | 
			
		||||
		name = rb_iv_get(rb_obj_class(self), "default_name");
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -87,6 +92,11 @@ RB_METHOD(fontInitializeCopy)
 | 
			
		|||
	f->setColor(new Color(*f->getColor()));
 | 
			
		||||
	wrapProperty(self, f->getColor(), "color", ColorType);
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
	f->setOutColor(new Color(*f->getOutColor()));
 | 
			
		||||
	wrapProperty(self, f->getOutColor(), "out_color", ColorType);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return self;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -158,6 +168,15 @@ DEF_PROP_B(Font, Bold)
 | 
			
		|||
DEF_PROP_B(Font, Italic)
 | 
			
		||||
DEF_PROP_OBJ(Font, Color, Color, "color")
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
DEF_PROP_B(Font, Shadow)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
DEF_PROP_B(Font, Outline)
 | 
			
		||||
DEF_PROP_OBJ(Font, Color, OutColor, "out_color")
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define DEF_KLASS_PROP(Klass, type, PropName, param_t_s, value_fun) \
 | 
			
		||||
	RB_METHOD(Klass##Get##PropName) \
 | 
			
		||||
	{ \
 | 
			
		||||
| 
						 | 
				
			
			@ -177,6 +196,16 @@ DEF_KLASS_PROP(Font, int, DefaultSize, "i", rb_fix_new)
 | 
			
		|||
DEF_KLASS_PROP(Font, bool, DefaultBold, "b", rb_bool_new)
 | 
			
		||||
DEF_KLASS_PROP(Font, bool, DefaultItalic, "b", rb_bool_new)
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
DEF_KLASS_PROP(Font, bool, DefaultShadow, "b", rb_bool_new)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
DEF_KLASS_PROP(Font, bool, DefaultOutline, "b", rb_bool_new)
 | 
			
		||||
 | 
			
		||||
// TODO: impl Get/SetDefaultOutColor
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
RB_METHOD(FontGetDefaultName)
 | 
			
		||||
{
 | 
			
		||||
	RB_UNUSED_PARAM;
 | 
			
		||||
| 
						 | 
				
			
			@ -239,6 +268,14 @@ fontBindingInit()
 | 
			
		|||
	INIT_KLASS_PROP_BIND(Font, DefaultItalic, "default_italic");
 | 
			
		||||
	INIT_KLASS_PROP_BIND(Font, DefaultColor, "default_color");
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
	INIT_KLASS_PROP_BIND(Font, DefaultShadow, "default_shadow");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
	INIT_KLASS_PROP_BIND(Font, DefaultOutline, "default_outline");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	rb_define_class_method(klass, "exist?", fontDoesExist);
 | 
			
		||||
 | 
			
		||||
	_rb_define_method(klass, "initialize",      fontInitialize);
 | 
			
		||||
| 
						 | 
				
			
			@ -249,4 +286,13 @@ fontBindingInit()
 | 
			
		|||
	INIT_PROP_BIND(Font, Bold, "bold");
 | 
			
		||||
	INIT_PROP_BIND(Font, Italic, "italic");
 | 
			
		||||
	INIT_PROP_BIND(Font, Color, "color");
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
	INIT_PROP_BIND(Font, Shadow, "shadow");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
	INIT_PROP_BIND(Font, Outline, "outline");
 | 
			
		||||
	INIT_PROP_BIND(Font, OutColor, "out_color");
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										64
									
								
								src/font.cpp
									
										
									
									
									
								
							
							
						
						
									
										64
									
								
								src/font.cpp
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -198,17 +198,25 @@ struct FontPrivate
 | 
			
		|||
	int size;
 | 
			
		||||
	bool bold;
 | 
			
		||||
	bool italic;
 | 
			
		||||
	bool outline;
 | 
			
		||||
	bool shadow;
 | 
			
		||||
	Color *color;
 | 
			
		||||
	Color *outColor;
 | 
			
		||||
 | 
			
		||||
	Color colorTmp;
 | 
			
		||||
	Color outColorTmp;
 | 
			
		||||
 | 
			
		||||
	static std::string defaultName;
 | 
			
		||||
	static int defaultSize;
 | 
			
		||||
	static bool defaultBold;
 | 
			
		||||
	static bool defaultItalic;
 | 
			
		||||
	static bool defaultOutline;
 | 
			
		||||
	static bool defaultShadow;
 | 
			
		||||
	static Color *defaultColor;
 | 
			
		||||
	static Color *defaultOutColor;
 | 
			
		||||
 | 
			
		||||
	static Color defaultColorTmp;
 | 
			
		||||
	static Color defaultOutColorTmp;
 | 
			
		||||
 | 
			
		||||
	/* The actual font is opened as late as possible
 | 
			
		||||
	 * (when it is queried by a Bitmap), prior it is
 | 
			
		||||
| 
						 | 
				
			
			@ -221,8 +229,12 @@ struct FontPrivate
 | 
			
		|||
	      size(size ? size : defaultSize),
 | 
			
		||||
	      bold(defaultBold),
 | 
			
		||||
	      italic(defaultItalic),
 | 
			
		||||
	      outline(defaultOutline),
 | 
			
		||||
	      shadow(defaultShadow),
 | 
			
		||||
	      color(&colorTmp),
 | 
			
		||||
	      outColor(&outColorTmp),
 | 
			
		||||
	      colorTmp(*defaultColor),
 | 
			
		||||
	      outColorTmp(*defaultOutColor),
 | 
			
		||||
	      sdlFont(0)
 | 
			
		||||
	{}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -231,19 +243,27 @@ struct FontPrivate
 | 
			
		|||
	      size(other.size),
 | 
			
		||||
	      bold(other.bold),
 | 
			
		||||
	      italic(other.italic),
 | 
			
		||||
	      outline(other.outline),
 | 
			
		||||
	      shadow(other.shadow),
 | 
			
		||||
	      color(&colorTmp),
 | 
			
		||||
	      outColor(&outColorTmp),
 | 
			
		||||
	      colorTmp(*other.color),
 | 
			
		||||
	      outColorTmp(*other.outColor),
 | 
			
		||||
	      sdlFont(other.sdlFont)
 | 
			
		||||
	{}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
std::string FontPrivate::defaultName   = "Arial";
 | 
			
		||||
int         FontPrivate::defaultSize   = 22;
 | 
			
		||||
bool        FontPrivate::defaultBold   = false;
 | 
			
		||||
bool        FontPrivate::defaultItalic = false;
 | 
			
		||||
Color      *FontPrivate::defaultColor  = &FontPrivate::defaultColorTmp;
 | 
			
		||||
std::string FontPrivate::defaultName     = "Arial";
 | 
			
		||||
int         FontPrivate::defaultSize     = 22;
 | 
			
		||||
bool        FontPrivate::defaultBold     = false;
 | 
			
		||||
bool        FontPrivate::defaultItalic   = false;
 | 
			
		||||
bool        FontPrivate::defaultOutline  = false;
 | 
			
		||||
bool        FontPrivate::defaultShadow   = true;
 | 
			
		||||
Color      *FontPrivate::defaultColor    = &FontPrivate::defaultColorTmp;
 | 
			
		||||
Color      *FontPrivate::defaultOutColor = &FontPrivate::defaultOutColorTmp;
 | 
			
		||||
 | 
			
		||||
Color FontPrivate::defaultColorTmp(255, 255, 255, 255);
 | 
			
		||||
Color FontPrivate::defaultOutColorTmp(0, 0, 0, 128);
 | 
			
		||||
 | 
			
		||||
bool Font::doesExist(const char *name)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -299,15 +319,33 @@ void Font::setSize(int value)
 | 
			
		|||
#undef CHK_DISP
 | 
			
		||||
#define CHK_DISP
 | 
			
		||||
 | 
			
		||||
DEF_ATTR_RD_SIMPLE(Font, Size, int, p->size)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Bold, bool, p->bold)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Italic, bool, p->italic)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Color, Color*, p->color)
 | 
			
		||||
DEF_ATTR_RD_SIMPLE(Font, Size,  int,    p->size)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Bold,     bool,   p->bold)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Italic,   bool,   p->italic)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Color,    Color*, p->color)
 | 
			
		||||
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultSize, int, FontPrivate::defaultSize)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultBold, bool, FontPrivate::defaultBold)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultItalic, bool, FontPrivate::defaultItalic)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultColor, Color*, FontPrivate::defaultColor)
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Shadow,   bool,   p->shadow)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, Outline,  bool,   p->outline)
 | 
			
		||||
DEF_ATTR_SIMPLE(Font, OutColor, Color*, p->outColor)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultSize,       int,    FontPrivate::defaultSize)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultBold,       bool,   FontPrivate::defaultBold)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultItalic,     bool,   FontPrivate::defaultItalic)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultColor,      Color*, FontPrivate::defaultColor)
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultShadow,     bool,   FontPrivate::defaultShadow)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultOutline,    bool,   FontPrivate::defaultOutline)
 | 
			
		||||
DEF_ATTR_SIMPLE_STATIC(Font, DefaultOutColor,   Color*, FontPrivate::defaultOutColor)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
const char *Font::getDefaultName()
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										36
									
								
								src/font.h
									
										
									
									
									
								
							
							
						
						
									
										36
									
								
								src/font.h
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -85,16 +85,34 @@ public:
 | 
			
		|||
	const char *getName() const;
 | 
			
		||||
	void setName(const char *value);
 | 
			
		||||
 | 
			
		||||
	DECL_ATTR( Size,   int    )
 | 
			
		||||
	DECL_ATTR( Bold,   bool   )
 | 
			
		||||
	DECL_ATTR( Italic, bool   )
 | 
			
		||||
	DECL_ATTR( Color,  Color* )
 | 
			
		||||
	DECL_ATTR( Size,     int    )
 | 
			
		||||
	DECL_ATTR( Bold,     bool   )
 | 
			
		||||
	DECL_ATTR( Italic,   bool   )
 | 
			
		||||
	DECL_ATTR( Color,    Color* )
 | 
			
		||||
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultName,   const char* )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultSize,   int         )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultBold,   bool        )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultItalic, bool        )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultColor,  Color*      )
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
	DECL_ATTR( Shadow,   bool   )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
	DECL_ATTR( Outline,  bool   )
 | 
			
		||||
	DECL_ATTR( OutColor, Color* )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultName,     const char* )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultSize,     int         )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultBold,     bool        )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultItalic,   bool        )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultColor,    Color*      )
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS2
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultShadow,   bool        )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef RGSS3
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultOutline,  bool        )
 | 
			
		||||
	DECL_ATTR_STATIC( DefaultOutColor, Color*      )
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* internal */
 | 
			
		||||
	_TTF_Font *getSdlFont();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue