1
0
mirror of https://github.com/azure-rtos/guix.git synced 2025-02-04 07:13:17 +08:00
guix/guix_studio/widget_service_provider.h

66 lines
3.6 KiB
C
Raw Normal View History

#ifndef _WIDGET_SERVICE_PROVIDER_
#define _WIDGET_SERVICE_PROVIDER_
class screen_generator; // forward reference
#define RESIZE_MODE_ALL 1
#define RESIZE_MODE_HEIGHT 2
#define RESIZE_MODE_WIDTH 3
class widget_service_provider
{
public:
widget_service_provider();
virtual ~widget_service_provider() {}
widget_info *InitWidgetInfo(GX_WIDGET *child);
virtual int GetType() {return GX_TYPE_WIDGET;}
virtual CString GetTypeName(widget_info *) {return CString("GX_TYPE_WIDGET");}
virtual CString GetShortName() {return CString("widget");}
virtual CString GetVarDeclaration();
virtual CString GetControlBlockName() {return CString("GX_WIDGET");}
static CString GetDefaultEventProcess(int widget_type);
virtual CString DeclarePropertiesStruct();
virtual CString WriteExtendedProperties(screen_generator *gen, CString &scope, widget_info *info) {return CString("");}
virtual CString GetCreateFromDefFunctionName();
virtual CString GetCreateFromDefFunction(int version);
GX_RESOURCE_ID GetStringId(char *string);
void GetStringText(CHAR *put, int limit, widget_info *info);
static void GetTextDimension(int base_type, GX_CONST GX_CHAR *string, GX_FONT *normal_font, GX_FONT *selected_font, INT &max_width, INT &max_height);
static void GetTextDrawDimension(widget_info *info, GX_DISPLAY *display, INT &draw_width, INT &draw_height);
static GX_RECTANGLE CalculateTextFitSize(widget_info *info, int display_index);
BOOL CheckResizeToText(widget_info *info, int resize_mode = RESIZE_MODE_ALL);
BOOL CheckResizeToPixelmap(widget_info *info, int resize_mode = RESIZE_MODE_ALL, BOOL DontShrink = FALSE);
virtual widget_info *CreateNewInstance(GX_WIDGET *parent);
virtual GX_WIDGET *GenerateFromInfo(GX_WIDGET *parent, widget_info *info);
static void WriteStringId(xml_writer &writer, studiox_project *project, int display, char *tag, GX_RESOURCE_ID resid);
static void WriteFontId(xml_writer &writer, studiox_project *project, int display, char *tag, GX_RESOURCE_ID resid);
static void WritePixelmapId(xml_writer &writer, studiox_project *project, int display, char *tag, GX_RESOURCE_ID resid);
static void WriteColorId(xml_writer &writer, studiox_project *project, int display, char *tag, GX_RESOURCE_ID resid);
static GX_RESOURCE_ID ReadStringId(xml_reader &reader, studiox_project *project, int display, char *tag);
static GX_RESOURCE_ID ReadFontId(xml_reader &reader, studiox_project *project, int display, char *tag);
static GX_RESOURCE_ID ReadPixelmapId(xml_reader &reader, studiox_project *project, int display, char *tag);
static GX_RESOURCE_ID ReadColorId(xml_reader &reader, studiox_project *project, int display, char *tag);
virtual void SaveToProject(xml_writer &, studiox_project *project, int display, widget_info *);
virtual void ReadFromProject(xml_reader &, studiox_project *projet, int display, widget_info *info, ULONG valid_styles);
virtual void Reset() {};
void MakeCreatePreamble(char *name, int version, CString &out);
virtual void AssignText(widget_info *info, int index, GX_RESOURCE_ID string_id) {}
virtual void AssignFont(widget_info *info, int index, GX_RESOURCE_ID font_id) {}
virtual void AssignColor(widget_info *info, int index, GX_RESOURCE_ID color_id);
virtual void AssignPixelmap(widget_info *info, int index, GX_RESOURCE_ID pixmap_id) {}
virtual void Autosize(widget_info *info) {}
static int GetBorderWidth(DWORD style);
};
#endif