JunkBox_Lib++ (for Windows) 1.10.1
Loading...
Searching...
No Matches
ExMSGraph< T > Class Template Reference

#include <ExGdata.h>

Inheritance diagram for ExMSGraph< T >:
Collaboration diagram for ExMSGraph< T >:

Public Member Functions

 ExMSGraph (int x, int y=1, int z=1, T v=(T) 0, T b=(T) 0, double rz=1.0, int *rn=NULL)
 
 ExMSGraph (RBound< int > rb, T v=(T) 0, T b=(T) 0, double rz=1.0, int *rn=NULL)
 
 ExMSGraph (int *rn=NULL)
 
virtual ~ExMSGraph (void)
 
void set (int x, int y=1, int z=1, T v=(T) 0, T b=(T) 0, double rz=1.0, int *rn=NULL)
 
void set (RBound< int > rb, T v=(T) 0, T b=(T) 0, double rz=1.0, int *rn=NULL)
 
void mimicry (ExMSGraph< T > s)
 
bool isNull (void)
 グラフィックデータを持いないか?
 
void free (void)
 グラフィックデータを開放する(メモリ管理なし兼用)
 
void mfree (bool azero=false)
 グラフィックデータを開放する
 
void ffree (void)
 グラフィックデータを強制開放する
 
void setRefer (int *rn)
 
ExMSGraph< T > operator= (ExMSGraph< T > &s)
 
ExMSGraph< T > operator= (MSGraph< T > &s)
 
- Public Member Functions inherited from MSGraph< T >
 MSGraph (int x, int y=1, int z=1, T v=(T) 0, T b=(T) 0, double rz=1.0)
 
 MSGraph (RBound< int > rb, T v=(T) 0, T b=(T) 0, double rz=1.0)
 
 MSGraph (void)
 
virtual ~MSGraph (void)
 
T & point (int x, int y=0, int z=0)
 座標(x,y,z)の画素値の参照
 
get_vPoint (double x, double y=0., double z=0., int mode=OFF)
 
void set_vPoint (double x, double y=0., double z=0., T cc=(T) 0, int mode=OFF)
 
void put_vPoint (double x, double y=0., double z=0., T cc=(T) 0, int mode=OFF)
 
void set (RBound< int > rb, T v=(T) 0, T b=(T) 0, double rz=1.0)
 
void set (int x, int y=1, int z=1, T v=(T) 0, T b=(T) 0, double rz=1.0)
 
void init (void)
 グラフィックデータは解放しない
 
bool isNull (void)
 グラフィックデータを持っていないか?
 
void fill (T v=(T) 0)
 全空間を画素値 v にする
 
void clear (T v)
 全空間を画素値 v にする
 
void clear (void)
 全空間を画素値 zero にする
 
void getm (int x, int y, int z=1, T v=(T) 0)
 グラフィックメモリを獲得する
 
void getm (T v=(T) 0)
 グラフィックメモリを獲得する
 
void free (void)
 グラフィックデータを開放する
 
void get_minmax (void)
 min, max を獲得
 
void set_array (T *ary, int sz=0)
 ary の内容を gpにコピー.
 
void contrast (T low, T high)
 コントラストの調整
 
template<typename R >
void mimicry (MSGraph< R > s)
 
template<typename R >
void dup (MSGraph< R > s)
 
void setWindow (double x1, double y1, double x2, double y2)
 
void setWindow3D (double x1, double y1, double z1, double x2, double y2, double z2)
 
void wMove (double x, double y, double z=0.0)
 
void wMove_rel (double x, double y, double z=0.0)
 
MSGraph< T > operator= (ExMSGraph< T > &s)
 

Public Attributes

int * refno
 
- Public Attributes inherited from MSGraph< T >
int xs
 xサイズ. 4Byte.
 
int ys
 yサイズ. 4Byte.
 
int zs
 zサイズ. 4Byte. 2Dの場合は 1.
 
T * gp
 グラフィックデータへのポインタ.
 
zero
 画素値のゼロ位.
 
base
 画措置の底上げの値.
 
max
 画素値の最大値
 
min
 画素値の最小値
 
int color
 データのカラータイプ
 
int state
 エラー制御
 
RBound< int > rbound
 画像の境界情報
 
double RZxy
 Z軸の歪.Z軸の間隔を 1とした XY軸の間隔.(X or Y)/Z.
 
double norm
 規格化定数.フィルタのときに使用.
 
double wRateX
 ワールド座標系の x成分1ドットに対するスクリーン座標系のドット数.
 
double wRateY
 ワールド座標系の y成分1ドットに対するスクリーン座標系のドット数.
 
double wRateZ
 ワールド座標系の z成分1ドットに対するスクリーン座標系のドット数.
 
double wZeroX
 スクリーン座標系の原点に対するワールド座標系の x成分.
 
double wZeroY
 スクリーン座標系の原点に対するワールド座標系の y成分.
 
double wZeroZ
 スクリーン座標系の原点に対するワールド座標系の z成分.
 
double wNowX
 ペンの現地点の x成分(ワールド座標系)
 
double wNowY
 ペンの現地点の y成分(ワールド座標系)
 
double wNowZ
 ペンの現地点の z成分(ワールド座標系)
 

Detailed Description

template<typename T = uWord>
class jbxl::ExMSGraph< T >

template <typename T=uWord>> class ExMSGraph : public MSGraph<T>

必ず参照数変数(refnoの実体)を指定すること.無くても動くかも知れないが,保証は無い.

関数の中からディストラクトされるメモリ(のコピー)をリターンする場合は,returnの前に 
mfree()を実行させること.

Definition at line 77 of file ExGdata.h.

Constructor & Destructor Documentation

◆ ExMSGraph() [1/3]

template<typename T = uWord>
ExMSGraph ( int x,
int y = 1,
int z = 1,
T v = (T)0,
T b = (T)0,
double rz = 1.0,
int * rn = NULL )
inline

Definition at line 85 of file ExGdata.h.

85{ set(x, y, z, v, b, rz, rn);}
void set(int x, int y=1, int z=1, T v=(T) 0, T b=(T) 0, double rz=1.0, int *rn=NULL)
Definition ExGdata.h:114

References ExMSGraph< T >::set().

Here is the call graph for this function:

◆ ExMSGraph() [2/3]

template<typename T = uWord>
ExMSGraph ( RBound< int > rb,
T v = (T)0,
T b = (T)0,
double rz = 1.0,
int * rn = NULL )
inline

Definition at line 86 of file ExGdata.h.

86{ set(rb, v, b, rz, rn);}

References ExMSGraph< T >::set().

Here is the call graph for this function:

◆ ExMSGraph() [3/3]

template<typename T = uWord>
ExMSGraph ( int * rn = NULL)
inline

Definition at line 87 of file ExGdata.h.

void setRefer(int *rn)
Definition ExGdata.h:136
void init(void)
グラフィックデータは解放しない
Definition Gdata.h:167

References MSGraph< T >::init(), and ExMSGraph< T >::setRefer().

Here is the call graph for this function:

◆ ~ExMSGraph()

template<typename T = uWord>
virtual ~ExMSGraph ( void )
inlinevirtual

Definition at line 88 of file ExGdata.h.

88{}

Member Function Documentation

◆ ffree()

template<typename T >
void ffree ( void )

template <typename T> void ExMSGraph<T>::ffree()

グラフィックデータを強制的に開放する

Definition at line 221 of file ExGdata.h.

222{
223 if (refno==NULL) {
224 if (!isNull()) {
226 }
227 }
228 else {
229 if (*refno>=0) {
231 *refno = -1;
232 }
233 }
234 MSGraph<T>::init(); // gp = NULL;
235 return;
236}
void free(void)
グラフィックデータを開放する(メモリ管理なし兼用)
Definition ExGdata.h:171
bool isNull(void)
グラフィックデータを持いないか?
Definition ExGdata.h:147
T * gp
グラフィックデータへのポインタ.
Definition Gdata.h:81

References MSGraph< T >::init(), and jbxl::isNull().

Here is the call graph for this function:

◆ free()

template<typename T >
void free ( void )

template <typename T> void ExMSGraph<T>::free(void)

グラフィックデータを開放する

メモリ管理をしている場合は,参照数を減らす. メモリ管理をしていない場合は,強制的に開放する.

Definition at line 171 of file ExGdata.h.

172{
173 if (refno==NULL) {
174 if (!isNull()) {
176 MSGraph<T>::init(); // gp = NULL;
177 }
178 }
179 else {
180 mfree();
181 }
182 return;
183}
void mfree(bool azero=false)
グラフィックデータを開放する
Definition ExGdata.h:196

References MSGraph< T >::init(), and jbxl::isNull().

Here is the call graph for this function:

◆ isNull()

template<typename T >
bool isNull ( void )

Definition at line 147 of file ExGdata.h.

148{
149 if (MSGraph<T>::gp==NULL) return true;
150
151#ifdef WIN32
152 if (MSGraph<T>::gp==(T*)WIN_DD_NULL) return true;
153#endif
154
155 if (refno!=NULL) {
156 if (*refno<0) return true;
157 else return false;
158 }
159 return false;
160}
#define WIN_DD_NULL
Definition common.h:96

References WIN_DD_NULL.

Referenced by ExMSGraph< T >::operator=().

Here is the caller graph for this function:

◆ mfree()

template<typename T >
void mfree ( bool azero = false)

template <typename T> void ExMSGraph<T>::mfree(bool azero)

グラフィックデータを開放する

メモリ管理をしている場合は,参照数を減らす. メモリ管理をしていない場合は,何もしない.

Parameters
azerotrue: 参照数 0 の状態を許す.

Definition at line 196 of file ExGdata.h.

197{
198 if (refno!=NULL) {
199 (*refno)--;
200 if (!azero && *refno==0) {
202 *refno = -1;
203 MSGraph<T>::init(); // gp = NULL;
204 }
205 else if (*refno==-1) {
206 DEBUG_MODE PRINT_MESG("ExMSGraph<T>::mfree: [警告] 通常ありえない参照数 0\n");
207 }
208 else if (*refno<-1) {
209 *refno = -1;
210 }
211 }
212 return;
213}
#define PRINT_MESG(...)
環境依存用の出力関数.MS Windows用は未実装
Definition tools.h:469
#define DEBUG_MODE
Definition tools.h:502

References DEBUG_MODE, MSGraph< T >::init(), and PRINT_MESG.

Referenced by ExMSGraph< T >::operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mimicry()

template<typename T = uWord>
void mimicry ( ExMSGraph< T > s)
inline

Definition at line 92 of file ExGdata.h.

92{ set(s.xs, s.ys, s.zs, s.zero, s.base, s.RZxy, NULL);}

References MSGraph< T >::base, MSGraph< T >::RZxy, ExMSGraph< T >::set(), MSGraph< T >::xs, MSGraph< T >::ys, MSGraph< T >::zero, and MSGraph< T >::zs.

Here is the call graph for this function:

◆ operator=() [1/2]

template<typename T >
ExMSGraph< T > operator= ( ExMSGraph< T > & s)

Definition at line 241 of file ExGdata.h.

242{
243 ExMSGraph<T> dm = *this;
244
245 MSGraph<T>::xs = s.xs;
246 MSGraph<T>::ys = s.ys;
247 MSGraph<T>::zs = s.zs;
248 MSGraph<T>::gp = s.gp;
249 MSGraph<T>::zero = s.zero;
250 MSGraph<T>::base = s.base;
251
252 MSGraph<T>::max = s.max;
253 MSGraph<T>::min = s.min;
254 MSGraph<T>::color = s.color;
255 MSGraph<T>::state = s.state;
256 MSGraph<T>::rbound = s.rbound;
257 MSGraph<T>::RZxy = s.RZxy;
258 MSGraph<T>::norm = s.norm;
259
260 MSGraph<T>::wRateX = s.wRateX;
261 MSGraph<T>::wRateY = s.wRateY;
262 MSGraph<T>::wRateZ = s.wRateZ;
263 MSGraph<T>::wZeroX = s.wZeroX;
264 MSGraph<T>::wZeroY = s.wZeroY;
265 MSGraph<T>::wZeroZ = s.wZeroZ;
266 MSGraph<T>::wNowX = s.wNowX;
267 MSGraph<T>::wNowY = s.wNowY;
268 MSGraph<T>::wNowZ = s.wNowZ;
269
270 if (!s.isNull()) { // コピー元はデータを持っている.
271 if (s.refno!=NULL) { // コピー元は参照数変数を持っている.
272 if (*s.refno>=0) { // 相手の参照数変数を使う.
273 refno = s.refno;
274 (*refno)++;
275 }
276 else {
277 DEBUG_MODE PRINT_MESG("ExMSGraph<T>::= (ExMSGraph): コピー元参照数変数の不正!!\n");
278 }
279 }
280 else { // コピー元は参照数変数を持っていない.
281 if (refno!=NULL) { // 自分の参照数変数を持っている.
282 if (*refno<=-1) *refno = 1; // 自分の参照数変数が未使用ならそれを使う.
283 else refno = NULL; // 参照数変数は誰かが使っているので,自分は参照数変数無しになる.
284 }
285 }
286 }
287
288 else { // コピー元はデータを持っていない
289 MSGraph<T>::gp = NULL;
290 if (s.refno!=NULL) { // コピー元は参照数変数を持っている.
291 refno = s.refno; // 相手の参照数変数を使う.
292 *refno = -1; // データは無いので -1 に.
293 }
294 else { // コピー元は参照数変数を持っていない.
295 if (refno!=NULL) { // 自分の参照数変数を持っている.
296 if (*refno<=-1) *refno = -1; // 自分の参照数変数が未使用ならそれを使う.
297 else refno = NULL; // 参照数変数は誰かが使っているので,自分は参照数変数無しになる.
298 }
299 }
300 }
301
302 if (!dm.isNull()) dm.mfree();
303 return *this;
304}
double wNowZ
ペンの現地点の z成分(ワールド座標系)
Definition Gdata.h:104
double wZeroX
スクリーン座標系の原点に対するワールド座標系の x成分.
Definition Gdata.h:99
int color
データのカラータイプ
Definition Gdata.h:89
T base
画措置の底上げの値.
Definition Gdata.h:83
double wZeroY
スクリーン座標系の原点に対するワールド座標系の y成分.
Definition Gdata.h:100
int zs
zサイズ. 4Byte. 2Dの場合は 1.
Definition Gdata.h:80
double wRateY
ワールド座標系の y成分1ドットに対するスクリーン座標系のドット数.
Definition Gdata.h:97
T max
画素値の最大値
Definition Gdata.h:87
double wZeroZ
スクリーン座標系の原点に対するワールド座標系の z成分.
Definition Gdata.h:101
T min
画素値の最小値
Definition Gdata.h:88
double wRateZ
ワールド座標系の z成分1ドットに対するスクリーン座標系のドット数.
Definition Gdata.h:98
double wNowX
ペンの現地点の x成分(ワールド座標系)
Definition Gdata.h:102
double norm
規格化定数.フィルタのときに使用.
Definition Gdata.h:93
int xs
xサイズ. 4Byte.
Definition Gdata.h:78
int state
エラー制御
Definition Gdata.h:90
double RZxy
Z軸の歪.Z軸の間隔を 1とした XY軸の間隔.(X or Y)/Z.
Definition Gdata.h:92
T zero
画素値のゼロ位.
Definition Gdata.h:82
RBound< int > rbound
画像の境界情報
Definition Gdata.h:91
int ys
yサイズ. 4Byte.
Definition Gdata.h:79
double wNowY
ペンの現地点の y成分(ワールド座標系)
Definition Gdata.h:103
double wRateX
ワールド座標系の x成分1ドットに対するスクリーン座標系のドット数.
Definition Gdata.h:96

References MSGraph< T >::base, MSGraph< T >::color, DEBUG_MODE, MSGraph< T >::gp, ExMSGraph< T >::isNull(), MSGraph< T >::max, ExMSGraph< T >::mfree(), MSGraph< T >::min, MSGraph< T >::norm, PRINT_MESG, MSGraph< T >::rbound, ExMSGraph< T >::refno, MSGraph< T >::RZxy, MSGraph< T >::state, MSGraph< T >::wNowX, MSGraph< T >::wNowY, MSGraph< T >::wNowZ, MSGraph< T >::wRateX, MSGraph< T >::wRateY, MSGraph< T >::wRateZ, MSGraph< T >::wZeroX, MSGraph< T >::wZeroY, MSGraph< T >::wZeroZ, MSGraph< T >::xs, MSGraph< T >::ys, MSGraph< T >::zero, and MSGraph< T >::zs.

Here is the call graph for this function:

◆ operator=() [2/2]

template<typename T >
ExMSGraph< T > operator= ( MSGraph< T > & s)

Definition at line 309 of file ExGdata.h.

310{
311 if (!isNull()) mfree();
312
313 MSGraph<T>::xs = s.xs;
314 MSGraph<T>::ys = s.ys;
315 MSGraph<T>::zs = s.zs;
316 MSGraph<T>::gp = s.gp;
317 MSGraph<T>::zero = s.zero;
318 MSGraph<T>::base = s.base;
319
320 MSGraph<T>::max = s.max;
321 MSGraph<T>::min = s.min;
322 MSGraph<T>::color = s.color;
323 MSGraph<T>::state = s.state;
324 MSGraph<T>::rbound = s.rbound;
325 MSGraph<T>::RZxy = s.RZxy;
326 MSGraph<T>::norm = s.norm;
327
328 MSGraph<T>::wRateX = s.wRateX;
329 MSGraph<T>::wRateY = s.wRateY;
330 MSGraph<T>::wRateZ = s.wRateZ;
331 MSGraph<T>::wZeroX = s.wZeroX;
332 MSGraph<T>::wZeroY = s.wZeroY;
333 MSGraph<T>::wZeroZ = s.wZeroZ;
334 MSGraph<T>::wNowX = s.wNowX;
335 MSGraph<T>::wNowY = s.wNowY;
336
337 if (!s.isNull()) { // コピー元はデータを持っている.
338 if (refno!=NULL) { // 自分の参照数変数を持っている.
339 if (*refno<=-1) *refno = 1; // 自分の参照数変数が未使用ならそれを使う.
340 else refno = NULL; // 参照数変数は誰かが使っているので,自分は参照数変数無しになる.
341 }
342 }
343
344 else { // コピー元はデータを持っていない
345 MSGraph<T>::gp = NULL;
346 if (refno!=NULL) { // 自分の参照数変数を持っている.
347 if (*refno<=-1) *refno = -1; // 自分の参照数変数が未使用ならそれを使う.
348 else refno = NULL; // 参照数変数は誰かが使っているので,自分は参照数変数無しになる.
349 }
350 }
351
352 return *this;
353}

References MSGraph< T >::base, MSGraph< T >::color, MSGraph< T >::gp, jbxl::isNull(), MSGraph< T >::isNull(), MSGraph< T >::max, MSGraph< T >::min, MSGraph< T >::norm, MSGraph< T >::rbound, MSGraph< T >::RZxy, MSGraph< T >::state, MSGraph< T >::wNowX, MSGraph< T >::wNowY, MSGraph< T >::wRateX, MSGraph< T >::wRateY, MSGraph< T >::wRateZ, MSGraph< T >::wZeroX, MSGraph< T >::wZeroY, MSGraph< T >::wZeroZ, MSGraph< T >::xs, MSGraph< T >::ys, MSGraph< T >::zero, and MSGraph< T >::zs.

Here is the call graph for this function:

◆ set() [1/2]

template<typename T >
void set ( int x,
int y = 1,
int z = 1,
T v = (T)0,
T b = (T)0,
double rz = 1.0,
int * rn = NULL )

Definition at line 114 of file ExGdata.h.

115{
116 if (z<=0) z = 1;
117
118 MSGraph<T>::getm(x, y, z, v);
119 if (MSGraph<T>::gp==NULL) return;
120
122 if (rz==0.0) MSGraph<T>::RZxy = 1.0;
123 else MSGraph<T>::RZxy = rz;
124 MSGraph<T>::rbound.set(0, x-1, 0, y-1, 0, z-1);
125
126 if (rn!=NULL) setRefer(rn);
127 else if (refno!=NULL) {
128 if (MSGraph<T>::gp==NULL) *refno = -1;
129 else *refno = 1;
130 }
131 return;
132}
void getm(int x, int y, int z=1, T v=(T) 0)
グラフィックメモリを獲得する
Definition Gdata.h:250
void set(T XMin=(T) 0, T XMax=(T) 0, T YMin=(T) 0, T YMax=(T) 0, T ZMin=(T) 0, T ZMax=(T) 0, T TMin=(T) 0, T TMax=(T) 0)
Definition Vector.h:444

References MSGraph< T >::getm(), and MSGraph< T >::set().

Referenced by ExMSGraph< T >::ExMSGraph(), ExMSGraph< T >::ExMSGraph(), and ExMSGraph< T >::mimicry().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set() [2/2]

template<typename T >
void set ( RBound< int > rb,
T v = (T)0,
T b = (T)0,
double rz = 1.0,
int * rn = NULL )

Definition at line 106 of file ExGdata.h.

106 {
107 set(rb.xmax-rb.xmin+1, rb.ymax-rb.ymin+1, rb.zmax-rb.zmin+1, v, b, rz, rn);
109 return;
110}
T xmax
x軸境界の最大値.
Definition Vector.h:427
T ymin
y軸境界の最小値.
Definition Vector.h:428
T zmax
z軸境界の最大値.
Definition Vector.h:431
T xmin
x軸境界の最小値.
Definition Vector.h:426
T ymax
y軸境界の最大値.
Definition Vector.h:429
T zmin
z軸境界の最小値.
Definition Vector.h:430

References RBound< T >::xmax, RBound< T >::xmin, RBound< T >::ymax, RBound< T >::ymin, RBound< T >::zmax, and RBound< T >::zmin.

◆ setRefer()

template<typename T >
void setRefer ( int * rn)

Definition at line 136 of file ExGdata.h.

137{
138 refno = rn;
139 if (refno!=NULL) {
140 if (MSGraph<T>::gp==NULL) *refno = -1;
141 else *refno = 1;
142 }
143}

Referenced by ExMSGraph< T >::ExMSGraph().

Here is the caller graph for this function:

Member Data Documentation

◆ refno

template<typename T = uWord>
int* refno

Definition at line 81 of file ExGdata.h.

Referenced by ExMSGraph< T >::operator=().


The documentation for this class was generated from the following file: