aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/layer.h
blob: efc607d23528de273177f100e32eabe2c082717e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
//PORTABLE
#ifndef _LAYER_H
#define _LAYER_H

#ifndef _NOSTUDIO

#include <api/script/objects/smap.h>
#ifdef WASABI_WIDGETS_GUIOBJECT
#include <api/script/objects/guiobj.h>
#endif
#include <api/wnd/basewnd.h>
#include <tataki/bitmap/bitmap.h>
#include <api/wnd/virtualwnd.h>
#include <tataki/region/region.h>
#include <tataki/bitmap/autobitmap.h>
#include <api/wnd/wndclass/qpaintwnd.h>

#endif

#include <api/script/script.h>
#ifdef WASABI_WIDGETS_GUIOBJECT
#include <api/script/objects/guiobj.h>
#endif

// {5AB9FA15-9A7D-4557-ABC8-6557A6C67CA9}
static const GUID layerGuid = 
{ 0x5ab9fa15, 0x9a7d, 0x4557, { 0xab, 0xc8, 0x65, 0x57, 0xa6, 0xc6, 0x7c, 0xa9 } };

#define LAYER_PARENT GuiObjectWnd
#ifdef WASABI_WIDGETS_GUIOBJECT
class LayerScriptController : 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 LayerScriptController *layerController;
#endif
#ifndef _NOSTUDIO

#define RESIZE_NONE   0
#define RESIZE_TOP    1
#define RESIZE_BOTTOM 2
#define RESIZE_LEFT   4
#define RESIZE_RIGHT  8
#define RESIZE_TOPLEFT RESIZE_TOP | RESIZE_LEFT
#define RESIZE_TOPRIGHT RESIZE_TOP | RESIZE_RIGHT
#define RESIZE_BOTTOMLEFT RESIZE_BOTTOM | RESIZE_LEFT
#define RESIZE_BOTTOMRIGHT RESIZE_BOTTOM | RESIZE_RIGHT

class FxDynamicMove;

class Layer : public LAYER_PARENT, public SkinCallbackI
{
public:
  Layer();
	virtual ~Layer();

 virtual int onInit();
  virtual int onPaint(Canvas *canvas);
  virtual int onLeftButtonDown(int x, int y);
  virtual int onLeftButtonUp(int x, int y);
  virtual int onMouseMove(int x, int y);
  virtual int onLeftButtonDblClk(int x, int y);
  virtual int getCursorType(int x, int y);
  virtual int onResize();
  virtual int onActivate();
  virtual int onDeactivate();
  virtual int getPreferences(int what);

  virtual void setDblClickParam(const wchar_t *p);
  virtual const wchar_t *getDblClickParam();

  virtual void timerCallback(int id);

  virtual void setRegionFromBitmap(const wchar_t *bmpid);

  virtual void setRegionFromMap(SMap *map, int byte, int inversed);
  virtual void setRegion(SRegion *reg);
  virtual int onSiblingInvalidateRgn(api_region *r, ifc_window *who, int who_idx, int my_idx);

  virtual int wantSiblingInvalidations();

  virtual int getSourceOffsetX();
  virtual int getSourceOffsetY();

	virtual void layer_adjustDest(RECT *r) {}

  virtual void onBeginResize(RECT r);
  virtual void onEndResize(RECT r);
  virtual SkinBitmap *getBitmap();

  virtual void onSetVisible(int show);

  void setResize(int r);
  void setScaler(int m);
  virtual void invalidateRegionCache();

  virtual api_region *getRegion(); // stretched and tiled as needed
  virtual api_region *getBitmapRegion(); // not stretched or tiled
  virtual void makeRegion();
  virtual void deleteRegion();

  virtual void setTiling(int t);
  virtual int getTiling();

	virtual void setBitmap(const wchar_t *name);
	virtual int getWidth();
	virtual int getHeight();

  virtual int setXuiParam(int _xuihandle, int id, const wchar_t *paramname, const wchar_t *strvalue);

  virtual void setRegionOp(int i);

  virtual void setInactiveBitmap(const wchar_t *name);
  virtual void onCancelCapture();

  virtual int applyResizeRestrictions(int way, int *side=NULL);
  
	virtual bool layer_isInvalid();
  //FG> fx

#if defined(WA3COMPATIBILITY) || defined(GEN_FF)
  virtual void fx_setEnabled(int i);
  virtual int fx_getEnabled(void);
  virtual void fx_setWrap(int i);
  virtual int fx_getWrap(void);
  virtual void fx_setRect(int i);
  virtual int fx_getRect(void);
  virtual void fx_setBilinear(int i);
  virtual int fx_getBilinear(void);
  virtual void fx_setAlphaMode(int i);
  virtual int fx_getAlphaMode(void);
  virtual void fx_setBgFx(int i);
  virtual int fx_getBgFx(void);
  virtual void fx_setClear(int i);
  virtual int fx_getClear(void);
  virtual void fx_setLocalized(int i);
  virtual int fx_getLocalized(void);
  virtual void fx_setGridSize(int x, int y);
  virtual void fx_update(void);
  virtual void fx_restart(void);
  virtual void fx_onInit(void);
  virtual void fx_onFrame(void);
  virtual void fx_setSpeed(int d);
  virtual int fx_getSpeed(void);
  virtual void fx_setRealtime(int r);
  virtual int fx_getRealtime(void);
  virtual double fx_onGetPixelA(double r, double d, double x, double y);
  virtual double fx_onGetPixelX(double r, double d, double x, double y);
  virtual double fx_onGetPixelY(double r, double d, double x, double y);
  virtual double fx_onGetPixelR(double r, double d, double x, double y);
  virtual double fx_onGetPixelD(double r, double d, double x, double y);
#endif

	virtual int skincb_onColorThemeChanged(const wchar_t *newcolortheme); 

  enum {
    LAYER_SETIMAGE=0,
    LAYER_SETRESIZE,
    LAYER_SETSCALE,
    LAYER_SETREGION,
    LAYER_SETTILE,
    LAYER_SETDBLCLICKACTION,
	LAYER_DBLCLICKPARAM,
    LAYER_SETINACTIVEIMAGE,
	LAYER_SETMYCURSOR,
	LAYER_SETQUALITY,
	//	LAYER_NUMPARAMS, // martin> there is no reference for this elsewhere in gen_ff, so CUT
		
  };

  int l_customcursor;

protected:
/*static */void CreateXMLParameters(int master_handle);
  const wchar_t *layer_getBitmapName();
  SkinBitmap *layer_getBitmap();

private:
static XMLParamPair params[];
	AutoSkinBitmap bitmap;
	int resizer, resizeway, resizing, resizerect;
	int cap, scaler, scalerway, scaling;
	POINT anchor;
	int clickthrough;
  RegionI *rgn, *secrgn, *rgnclone;
  int tiling;
  StringW bitmapname;
  int hasInactiveImage;
  StringW inactiveImageName;
  AutoSkinBitmap inactiveBitmap;
  int xuihandle;
  StringW dblclickparam;

  int fx_on;
  int fx_wrap;
  int fx_rect;
  int fx_grid_x;
  int fx_grid_y;
  int fx_bilinear;
  int fx_alphamode;
  int fx_alphaonce;
  int fx_bgfx;
  int fx_clear;
  int fx_delay;
  int fx_timeron;
  int fx_local;
  int fx_realtime;
  int last_w, last_h;
  FxDynamicMove *fx_dmove;

  StringW dblClickAction;
  StringW statustext;

// FG>
// -- SCRIPT -----------------------------------------------------

public:
  static scriptVar script_vcpu_onBeginResize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar l, scriptVar t, scriptVar w, scriptVar h);
  static scriptVar script_vcpu_onEndResize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar l, scriptVar t, scriptVar w, scriptVar h);
  static scriptVar script_vcpu_setRegionFromMap(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar map, scriptVar byte, scriptVar inversed);
  static scriptVar script_vcpu_setRegion(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar reg);

	static scriptVar script_vcpu_isInvalid(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);

  static scriptVar script_vcpu_fx_setEnabled(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getEnabled(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setWrap(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getWrap(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setRect(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getRect(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setBgFx(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getBgFx(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setClear(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getClear(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setRealtime(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getRealtime(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setLocalized(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getLocalized(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setBilinear(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getBilinear(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setAlphaMode(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar a);
  static scriptVar script_vcpu_fx_getAlphaMode(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setGridSize(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar x, scriptVar y);
  static scriptVar script_vcpu_fx_update(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_restart(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_onInit(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_onFrame(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_setSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar s);
  static scriptVar script_vcpu_fx_getSpeed(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
  static scriptVar script_vcpu_fx_onGetPixelA(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r, scriptVar d, scriptVar x, scriptVar y);
  static scriptVar script_vcpu_fx_onGetPixelX(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r, scriptVar d, scriptVar x, scriptVar y);
  static scriptVar script_vcpu_fx_onGetPixelY(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r, scriptVar d, scriptVar x, scriptVar y);
  static scriptVar script_vcpu_fx_onGetPixelR(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r, scriptVar d, scriptVar x, scriptVar y);
  static scriptVar script_vcpu_fx_onGetPixelD(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar r, scriptVar d, scriptVar x, scriptVar y);

#else
class Layer : public LAYER_SCRIPTPARENT {

#endif

public:

//  INSERT_SCRIPT_OBJECT_CONTROL

};
#ifdef WASABI_WIDGETS_GUIOBJECT
extern const wchar_t layerXuiObjectStr[];
extern char layerXuiSvcName[];
class LayerXuiSvc : public XuiObjectSvc<Layer, layerXuiObjectStr, layerXuiSvcName> {};
#endif
#endif