123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- //NONPORTABLE
- #ifndef _FRAMEWND_H
- #define _FRAMEWND_H
- #include <bfc/common.h>
- #include <api/wnd/wndclass/labelwnd.h>
- #include <tataki/bitmap/autobitmap.h>
- #define MAXCHILD 2 // this had better never not be 2
- typedef enum {
- DIVIDER_HORIZONTAL, DIVIDER_VERTICAL, DIVIDER_UNDEFINED = -1
- } FrameWndDividerType;
- enum { SDP_FROMLEFT, SDP_FROMRIGHT };
- #define SDP_FROMTOP SDP_FROMLEFT
- #define SDP_FROMBOTTOM SDP_FROMRIGHT
- typedef enum {
- FRAMEWND_SQUISH,
- FRAMEWND_COVER
- } FrameWndSlideMode;
- #define SIZERWIDTH 8
- // this window holds other basewnd derived classes
- #define FRAMEWND_PARENT LabelWnd
- class FrameWnd : public FRAMEWND_PARENT {
- public:
- FrameWnd();
- virtual ~FrameWnd();
- virtual int onInit();
- virtual int getCursorType(int x, int y);
- virtual int onPaint(Canvas *canvas);
- virtual int onResize();
- virtual int onLeftButtonDown(int x, int y);
- virtual int onMouseMove(int x, int y); // only called when mouse captured
- virtual int onLeftButtonUp(int x, int y);
- virtual int childNotify(ifc_window *which, int msg, intptr_t param1, intptr_t param2);
- // virtual int forceFocus();
- // unique to this class
- int setChildren(BaseWnd *child1, BaseWnd *child2=NULL);
- int setChildrenRootWnd(ifc_window *child1, ifc_window *child2=NULL);
- ifc_window *enumChild(int which);
- // horizontal or vertical?
- void setDividerType(FrameWndDividerType type);
- FrameWndDividerType getDividerType();
- // where is the divider?
- int setDividerPos(int from, int pos);
- // this version doesn't check the cfg file for last position
- int setDividerPosNoCfg(int from, int pos);
- void getDividerPos(int *from, int *pos);
- int setResizeable(int is);
- void setMinWidth(int min);
- void setMaxWidth(int max);
- void setSnap(int snap);
- virtual int onGetFocus();
- virtual int onDeferredCallback(intptr_t p1, intptr_t p2);
- // cover or squish
- void setSlideMode(FrameWndSlideMode mode);
- FrameWndSlideMode getSlideMode();
- virtual void onResizeChildren(RECT leftr, RECT rightr);
- // drag and drops are forwarded into windowshaded windows
- virtual int dragEnter(ifc_window *sourceWnd);
- virtual int dragOver(int x, int y, ifc_window *sourceWnd);
- virtual int dragLeave(ifc_window *sourceWnd);
- virtual int dragDrop(ifc_window *sourceWnd, int x, int y);
- protected:
- int convertPropToPix(int prop);
- int ConvertPixToProp();
- void windowshade(int which, int shaded);
- ifc_window *getWindowShadedChild();
- void Set_v_bitmap(const wchar_t *new_v_bitmap);
- void Set_v_grabber(const wchar_t *new_v_grabber);
- private:
- int _setChildren(ifc_window *child1, ifc_window *child2, BaseWnd *child1b, BaseWnd *child2b);
- int nchild;
- BaseWnd *children[MAXCHILD];
- ifc_window *rwchildren[MAXCHILD];
- int hidey[MAXCHILD];
- int windowshaded[MAXCHILD];
- FrameWndDividerType vert;
- int resizeable;
- FrameWndSlideMode slidemode;
- int divideside;
- int pullbarpos; // 0..65536
- int prevpullbarpos;
- int minwidth, maxwidth;
- int maxpixels;
- boolean noMaxRestriction;
- int minpixels;
- int snapoffsetx, snapoffsety;
- int SNAP;
- RECT sizerRect;
- AutoSkinBitmap h_bitmap, v_bitmap, h_grabber, v_grabber, ws_bitmap;
- int resizing;
- };
- #define PULLBAR_FULL 65536L
- #define PULLBAR_HALF (PULLBAR_FULL/2)
- #define PULLBAR_QUARTER (PULLBAR_FULL/4)
- #define PULLBAR_THREEQUARTER (PULLBAR_FULL-PULLBAR_QUARTER)
- #define PULLBAR_EIGHTH (PULLBAR_FULL/8)
- #endif
|