00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef INC_GRE_LRLEGND2_H
00025 #define INC_GRE_LRLEGND2_H
00026
00027 #ifndef INC_MI32_GRE_H
00028 #include <mi32/gre.h>
00029 #endif
00030
00031
00032
00033 class GRE_LAYER_LEGEND2 : public GRE_LAYER {
00034 public:
00035
00036
00037 class LAYERREF {
00038 public:
00039 UNICODE *m_name;
00040
00041 GRE_LAYER* m_layer;
00042 ELEMTYPE m_ElemType;
00043 UINT32 m_ID;
00044
00045 LAYERREF (
00046 ) :
00047 m_name(0),
00048 m_layer(0),
00049 m_ID(0),
00050 m_ElemType(ELEMTYPE_Empty)
00051 {
00052 }
00053
00054 LAYERREF (
00055 GRE_LAYER* lyr,
00056 ELEMTYPE et
00057 );
00058
00059 LAYERREF(const LAYERREF& rhs) :
00060 m_ID(rhs.m_ID),
00061 m_layer(rhs.m_layer),
00062 m_ElemType(rhs.m_ElemType)
00063 {
00064 m_name = rhs.m_name ? ucstrdup(rhs.m_name) : 0;
00065 }
00066
00067 ~LAYERREF() {
00068 MmFree(m_name);
00069 }
00070
00071 LAYERREF& operator= (const LAYERREF& rhs) {
00072 if (this != &rhs) {
00073 m_name = rhs.m_name ? ucstrdup(rhs.m_name) : 0;
00074 m_ID = rhs.m_ID;
00075 m_layer = rhs.m_layer;
00076 m_ElemType = rhs.m_ElemType;
00077 }
00078 return (*this);
00079 }
00080
00081
00082 void SetLayer (
00083 GRE_LAYER* layer
00084 );
00085
00086 };
00087
00088
00089 class DISPPARM : public GRE_LAYER::DISPPARM {
00090 public:
00091
00092 class DLG;
00093
00094
00095 GRAPHICLAYOUT m_grlayout;
00096 UINT32 m_NumLayers;
00097 LAYERREF* m_layers;
00098
00099
00100
00101 DISPPARM ();
00102 DISPPARM (const DISPPARM& rhs) {
00103 Copy(rhs);
00104 }
00105 virtual ~DISPPARM () {
00106 Free();
00107 }
00108
00109 DISPPARM& operator= (const DISPPARM& rhs) {
00110 if (this != &rhs) {
00111 Free();
00112 Copy(rhs);
00113 }
00114 return (*this);
00115 }
00116
00117 static void GRECB_LayerCallback (
00118 const GRE_CALLBACK_MSG* msg,
00119 void* cbdata
00120 );
00121
00122 static int SerializerCB_GRLayout (
00123 SERIALIZER& serializer,
00124 const SERIALIZER::ITEMDEF *itemdef,
00125 void* cbdata,
00126 SERIALIZER::ITEMDEF::ACTION action
00127 );
00128
00129
00130
00131
00132 INT32 GetLayerRefNum (
00133 GRE_LAYER* layer,
00134 ELEMTYPE ElemType,
00135 bool bAllocIfNotFound = false
00136 );
00137
00138 void OnLayerChange (
00139 INT32 LayerRefNum,
00140 bool deleting
00141 );
00142
00143 void OnLayoutLoaded (
00144 GRE_VIEWABLE* viewable
00145 );
00146
00147 protected:
00148 virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00149
00150 private:
00151 #ifndef GENERATING_DOXYGEN_OUTPUT
00152 GRE_LAYER_LEGEND2* m_layer;
00153 void Copy (const DISPPARM&);
00154 void Free ();
00155 friend class GRE_LAYER_LEGEND2;
00156 #endif
00157 };
00158
00159
00160 #ifndef WIN32_NATIVE
00161 static void CB_NewLegend2 (
00162 Widget w,
00163 void *vsubtype,
00164 void *
00165 );
00166 #endif
00167
00168
00169 static int Construct (
00170 GRE_GROUP *group,
00171 GRE_LAYER **retlayer,
00172 GRE_LAYER *reflayer,
00173 UINT32 flags
00174 );
00175
00176
00177 static void RegisterType (
00178 );
00179
00180
00181 explicit GRE_LAYER_LEGEND2 (
00182 GRE_GROUP *group,
00183 GRE_LAYER *reflayer = 0,
00184 UINT32 flags = MDISPCREATE_InsertAfter
00185 );
00186
00187 virtual ~GRE_LAYER_LEGEND2 ();
00188
00189
00190 const DISPPARM& GetDispParm (
00191 ) const { return (m_dispparm); }
00192
00193
00194 double GetScaleFactor (
00195 ) const;
00196
00197
00198
00199
00200
00201
00202
00203
00204 ERRVALUE SetDispParm (
00205 const DISPPARM& dispparm
00206 );
00207
00208 void SetLayout (
00209 const GRAPHICLAYOUT& grlayout
00210 );
00211
00212 protected:
00213
00214 DISPPARM m_dispparm;
00215
00216 private:
00217 #ifndef GENERATING_DOXYGEN_OUTPUT
00218
00219 #ifndef WIN32_NATIVE
00220 static void CB_CreateDialog (Widget, void*, void*);
00221 #endif
00222
00223 static void GRECB_LayoutLoaded (const GRE_CALLBACK_MSG* msg, void* cbdata);
00224
00225
00226 #if defined(X_NATIVE) || defined(WIN32_MFC)
00227 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00228 #endif
00229 virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00230 virtual const char* v_SerialGetTagName () const;
00231 virtual void v_SetDftName (bool ReplaceExisting);
00232 virtual ERRVALUE v_TemplateRead (SERIALIZER& serializer);
00233 virtual int v_UpdateExtents (bool forceupdate);
00234 virtual bool v_UsesTransparency (const MGD::CONTEXT* gc = 0) const;
00235
00236 friend class GRE_LAYER_LEGEND2::DISPPARM;
00237
00238 #endif
00239 };
00240
00241
00242
00243
00244 #endif