00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _ucontext_hpp_
00021 #define _ucontext_hpp_
00022
00023 #include <ubit/ustyle.hpp>
00024 #include <ubit/ufontImpl.hpp>
00025 #include <ubit/uview.hpp>
00026 #include <ubit/uviewImpl.hpp>
00027 #include <vector>
00028 namespace ubit {
00029
00030
00031
00032
00036 class UContext {
00037 public:
00038 UContext(UGroup*, UView*, const UContext& parent_ctx, UViewUpdateImpl*);
00040
00041 UGroup* getObj() {return obj;}
00043
00044 UBox* getBoxParent() {return view->getBoxParent();}
00045
00046
00047
00048
00049 UView* getView() {return view;}
00051
00052 UView* getWinView();
00054
00055 UGraph* getGraph();
00056 UDisp* getDisp();
00057
00058 void rescale();
00060
00061 void addFlagdef(const UFlagdef*);
00062 const UFlagdef* getFlagdef(const UFlag&) const;
00063 const UFlagdef* getFlagdef(const UFlag*) const;
00064 const UPropdef* getPropdef(const UFlag&) const;
00065 const UPropdef* getPropdef(const UFlag*) const;
00066
00067
00068 #ifndef NO_DOC
00069 ULocalProps local;
00070 UFontDesc fontdesc;
00071 char valign, halign;
00072 short vspacing, hspacing;
00073 UEdit* edit;
00074 const UColor *color, *bgcolor;
00075 UCursor *cursor;
00076 UPos* pos;
00077 float xyscale;
00078 bool boxIsHFlex, boxIsVFlex;
00079 unsigned short flag_count;
00080 UGroup* obj;
00081 UView* view;
00082 const UContext* parent_ctx;
00083 UWinContext* win_ctx;
00084 UViewUpdateImpl* view_impl;
00085
00086 protected:
00087 UContext() {}
00088 #endif
00089 };
00090
00091
00094 class UWinContext : public UContext {
00095 public:
00096 UWinContext(UView* winview, UGraph* = null);
00101 UGraph* getGraph() {return graph;}
00102
00103 private:
00104 friend class UContext;
00105 std::vector<const UFlagdef*> flags;
00106 UGraph* graph;
00107 };
00108
00109
00110
00111 inline UView* UContext::getWinView() {return win_ctx->view;}
00112 inline UDisp* UContext::getDisp() {return win_ctx->view->getDisp();}
00113 inline UGraph* UContext::getGraph() {return win_ctx->graph;}
00114
00115 }
00116 #endif
00117
00118