diff options
Diffstat (limited to 'Src/Wasabi/api/skin/widgets/text.h')
-rw-r--r-- | Src/Wasabi/api/skin/widgets/text.h | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/Src/Wasabi/api/skin/widgets/text.h b/Src/Wasabi/api/skin/widgets/text.h new file mode 100644 index 00000000..1435e8fa --- /dev/null +++ b/Src/Wasabi/api/skin/widgets/text.h @@ -0,0 +1,240 @@ +//PORTABLE +#ifndef _TEXT_H +#define _TEXT_H + +#include <api/script/script.h> +#include <api/script/objects/guiobj.h> +#include <api/wnd/wndclass/guiobjwnd.h> +#include <bfc/string/StringW.h> +#include <bfc/depend.h> +#include "textbase.h" +#include <api/syscb/callbacks/svccbi.h> +#include <api/syscb/callbacks/skincb.h> + +#define TEXT_PARENT TextBase + +class svc_textFeed; + +class TextScriptController : public GuiObjectScriptController { + public: + + virtual const wchar_t *getClassName(); + virtual const wchar_t *getAncestorClassName(); + virtual ScriptObjectController *getAncestorController() { return guiController; } + virtual int getNumFunctions(); + virtual const function_descriptor_struct *getExportedFunctions(); + virtual GUID getClassGuid(); + virtual ScriptObject *instantiate(); + virtual void destroy(ScriptObject *o); + virtual void *encapsulate(ScriptObject *o); + virtual void deencapsulate(void *o); + + private: + + static function_descriptor_struct exportedFunction[]; + +}; + +extern TextScriptController *textController; + +#include <api/wnd/wndclass/clickwnd.h> + +#ifdef WASABI_COMPILE_MEDIACORE +#include <api/syscb/callbacks/corecbi.h> +class Text : public TEXT_PARENT, public CoreCallbackI, public DependentViewerI, public SvcCallbackI{ +#else +class Text : public TEXT_PARENT, public DependentViewerI, public SvcCallbackI { +#endif +public: + Text(); + virtual ~Text(); + + virtual int onInit(); + virtual int onBufferPaint(BltCanvas *canvas, int w, int h); + + virtual int onLeftButtonDown(int x, int y); + virtual int onMouseMove(int x, int y); + virtual int onLeftButtonUp(int x, int y); + + virtual int getPreferences(int what); + + virtual int setXuiParam(int xuihandle, int attribid, const wchar_t *name, const wchar_t *strval); + virtual const wchar_t *vcpu_getClassName(); + virtual ScriptObjectController *vcpu_getController() { return textController; } + + virtual int getTextWidth(); + virtual int onDeferredCallback(intptr_t p1, intptr_t p2); + + + virtual void getBufferPaintSize(int *w, int *h); + virtual void getBufferPaintSource(RECT *r); + virtual void onNewBuffer(int w, int h) { BufferPaintWnd::onNewBuffer(w, h); invalidateTextBuffer(); } + + int setTextSize(int newsize, int alt=0); + void setTickering(int enable); + void setDisplay(int disp); + + + + void setShadowColor(ARGB32 c, int alt=0); + void setShadowX(int x, int alt=0); // relative offsets + void setShadowY(int y, int alt=0); + void setTimeTTS(int tts); + void resetTicker(); + void setTimeColonWidth(int w); + int getTimeColonWidth(int def); + void setTimerOffStyle(int o); + void setTimerHours(int o); + void setTimerHoursRollover(int o); + const wchar_t *getLastText() { return lasttxt; } + + void setAlternateName(const wchar_t *s); + const wchar_t *getAlternateName(void); + void setText(const wchar_t *t); + + void addCBSource(const wchar_t *cbsource); + + virtual void onTextChanged(const wchar_t *txt); + virtual void onSetName(); + virtual void advanceTicker(int *upd); + + virtual void setTimeDisplayMode(int remaining); // will only do so if text is displaying time in the first place + + ARGB32 getShadowColor(int alt=0); + +#ifdef WASABI_COMPILE_MEDIACORE + // core callbacks + virtual int corecb_onStatusMsg(const wchar_t *text); + virtual int corecb_onInfoChange(const wchar_t *text); + virtual int corecb_onStarted(); + virtual int corecb_onStopped(); + virtual int corecb_onSeeked(int newpos); + virtual int corecb_onBitrateChange(int kbps); + virtual int corecb_onSampleRateChange(int hz); +#endif + + static void textOut(Canvas *canvas, int x, int y, const wchar_t *txt, wchar_t widthchar, const Wasabi::FontInfo *fontInfo); + + virtual int viewer_onEvent(api_dependent *item, const GUID *classguid, int event, intptr_t param, void *ptr, size_t ptrlen); + virtual int triggerEvent(int event, intptr_t p1, intptr_t p2); + + const wchar_t *getPrintedText(); + + virtual void svccb_onSvcRegister(FOURCC type, waServiceFactory *svc); + + + void initDisplay(); + void invalidateTextBuffer(); + + enum { + TEXT_SETDISPLAY=0, + TEXT_SETTICKER, + TEXT_SETTEXT, + TEXT_SETSHADOWCOLOR, + TEXT_SETALTSHADOWCOLOR, + TEXT_SETSHADOWX, + TEXT_SETSHADOWY, + TEXT_SETALTSHADOWX, + TEXT_SETALTSHADOWY, + TEXT_SETTIMEROFFSTYLE, + TEXT_SETTIMERHOURS, + TEXT_SETTIMECOLONWIDTH, + TEXT_SETNOGRAB, + TEXT_SETSHOWLEN, + TEXT_SETFORCEFIXED, + TEXT_SETFORCEUPCASE, + TEXT_SETFORCELOCASE, + TEXT_SETCBSOURCE, + TEXT_SETWRAPPED, + TEXT_SETVALIGN, + TEXT_SETALTVALIGN, + TEXT_SETDBLCLKACTION, + TEXT_SETRCLKACTION, + TEXT_SETOFFSETX, + TEXT_SETOFFSETY, + TEXT_SETTICKERSTEP, + TEXT_SETTIMERHOURSROLLOVER, + TEXT_NUMPARAMS, + }; + + +protected: + /*static */void CreateXMLParameters(int master_handle); + virtual void timerCallback(int id); + +private: + static XMLParamPair params[]; + + const wchar_t *parseText(const wchar_t *s); + void registerToTextFeedService(); + int size[2]; + int textpos,tts,sens; + int time_tts; + int grab_x; + int cur_len; + int ticker; + int display; + int elapsed; + int fixedTimerStyle; + + int nograb; + int showlen; + int forcefixed; + int timeroffstyle; + + StringW displaystr; + StringW alternatename; + StringW lastText; + + FilteredColor shadowcolor[2]; + + SkinColor sshadowcolor[2]; + int shadowcolor_mode[2]; + int shadowx[2], shadowy[2]; + int timecolonw; + StringW deftext; + + + + PtrList<StringW> mycbid; + StringW cbsource; + int forceupcase, forcelocase; + StringW lasttxt; + + + int lastautowidth; + + svc_textFeed *textfeed; + StringW feed_id; + int registered_syscb; + + int wrapped; + int valign[2]; + int xuihandle; + int offsetx, offsety; + + StringW printedtxt; + int tickerstep; + int skipn; + int skip; + int skipcfgcount; + + int timerhours; + int timerhoursRollover; + int bufferinvalid; + int cachedsizew; + +public: + static scriptVar script_vcpu_setText(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar t); + static scriptVar script_vcpu_setAlternateText(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar t); + static scriptVar script_vcpu_getText(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_getTextWidth(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onTextChanged(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar text); + static wchar_t s_txt[WA_MAX_PATH]; +}; + +extern const wchar_t textXuiObjectStr[]; +extern char textXuiSvcName[]; +class TextXuiSvc : public XuiObjectSvc<Text, textXuiObjectStr, textXuiSvcName> {}; + +#endif |