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