解説クラスCopyClear(9)
解説クラスCopyClear(9)
2024年3月6初講(初稿)
この講義は解説『解説クラスCopyClear(8)』の
続きです!
int copy_even( // 転送:同単位
TypeArray *ps, // S配列
TypeArray *pd ); // D配列
int copy_diff( // 転送:異単位
TypeArray *ps, // S配列
TypeArray *pd ); // D配列
void copy_h( // 周囲転送用:水平線コピー
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int y ); // y座標
void copy_v( // 周囲転送用:垂直線コピー
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int x ); // x座標
void copyFieldFrameBase( // フィールドからフレーム画像への基本コピー
long* ps, // S:long単位ポインタ
long* pd, // D:long単位ポインタ
int h, // 水平幅:long単位
int v, // 垂直幅:S画像
int incS, // S:増加幅:long単位
int incD ); // S:増加幅:long単位
int repair0Image( // 欠陥画素修復:モード0:前詰め
TypeArray* pa, // 配列
int tbl[], // 欠陥場所テーブル
int n ); // 欠陥個数
int repair1Image( // 欠陥画素修復:モード1:補間
TypeArray* pa, // 配列
int tbl[], // 欠陥場所テーブル
int n ); // 欠陥個数
void repair1ImageByte( // 欠陥画素修復:補間:BYTE
TypeArray* pa, // 配列
int x, // 欠陥場所
int x0 ); // 欠陥場所の隣
void repair1ImageShort( // 欠陥画素修復:補間:2BYTE
TypeArray* pa, // 配列
int x, // 欠陥場所
int x0 ); // 欠陥場所の隣
void convert_b_b_x( // LUT変換:BYTE→BYTE:水平
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
BYTE lut[], // LUT
int h // 水平幅
);
void convert_b_b_y( // LUT変換:BYTE→BYTE:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE lut[] // LUT
);
int convert_b_b( // LUT変換:BYTE→BYTE:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_b_s_x( // LUT変換:BYTE→short:水平
BYTE *ps, // S配列実Ptr
short *pd, // D配列実Ptr
short lut[], // LUT
int h // 水平幅
);
void convert_b_s_y( // LUT変換:BYTE→short:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short lut[] // LUT
);
int convert_b_s( // LUT変換:BYTE→short:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_b_l_x( // LUT変換:BYTE→long:水平
BYTE *ps, // S配列実Ptr
long *pd, // D配列実Ptr
long lut[], // LUT
int h // 水平幅
);
void convert_b_l_y( // LUT変換:BYTE→long:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
long lut[] // LUT
);
int convert_b_l( // LUT変換:BYTE→long:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_b_f_x( // LUT変換:BYTE→float:水平
BYTE *ps, // S配列実Ptr
float *pd, // D配列実Ptr
float lut[], // LUT
int h // 水平幅
);
void convert_b_f_y( // LUT変換:BYTE→float:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
float lut[] // LUT
);
int convert_b_f( // LUT変換:BYTE→float:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_b_d_x( // LUT変換:BYTE→double:水平
BYTE *ps, // S配列実Ptr
double *pd, // D配列実Ptr
double lut[], // LUT
int h // 水平幅
);
void convert_b_d_y( // LUT変換:BYTE→double:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
double lut[] // LUT
);
int convert_b_d( // LUT変換:BYTE→double:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
int convert_b( // LUT変換:BYTE→汎用
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT配列
);
void convert_w_b_x( // LUT変換:UWORD→BYTE:水平
UWORD *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
BYTE lut[], // LUT
int h // 水平幅
);
void convert_w_b_y( // LUT変換:UWORD→BYTE:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE lut[] // LUT
);
int convert_w_b( // LUT変換:UWORD→BYTE:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_w_s_x( // LUT変換:UWORD→short:水平
UWORD *ps, // S配列実Ptr
short *pd, // D配列実Ptr
short lut[], // LUT
int h // 水平幅
);
void convert_w_s_y( // LUT変換:UWORD→short:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short lut[] // LUT
);
int convert_w_s( // LUT変換:UWORD→short:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_w_l_x( // LUT変換:UWORD→long:水平
UWORD *ps, // S配列実Ptr
long *pd, // D配列実Ptr
long lut[], // LUT
int h // 水平幅
);
void convert_w_l_y( // LUT変換:UWORD→long:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
long lut[] // LUT
);
int convert_w_l( // LUT変換:UWORD→long:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_w_f_x( // LUT変換:UWORD→float:水平
UWORD *ps, // S配列実Ptr
float *pd, // D配列実Ptr
float lut[], // LUT
int h // 水平幅
);
void convert_w_f_y( // LUT変換:UWORD→float:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
float lut[] // LUT
);
int convert_w_f( // LUT変換:UWORD→float:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
void convert_w_d_x( // LUT変換:UWORD→double:水平
UWORD *ps, // S配列実Ptr
double *pd, // D配列実Ptr
double lut[], // LUT
int h // 水平幅
);
void convert_w_d_y( // LUT変換:UWORD→double:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
double lut[] // LUT
);
int convert_w_d( // LUT変換:UWORD→double:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
int convert_w( // LUT変換:UWORD→汎用
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT配列
);
int cvt_byte_b( // LUT変換:S=BYTE,LUT=BYTE
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE *lut // LUTポインタ
);
int cvt_byte_w( // LUT変換:S=UWORD,LUT=BYTE
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE *lut // LUTポインタ
);
int cvt_word_b( // LUT変換:S=BYTE,LUT=short
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short *lut // LUTポインタ
);
int cvt_word_w( // LUT変換:S=UWORD,LUT=short
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short *lut // LUTポインタ
);
void convertLineX( // 水平方向輝度変換
TypeArray* ps, // S配列
TypeArray* pd, // D配列
BYTE lut[] // LUT(256×水平幅)
);
void convertLineY( // 垂直方向輝度変換
TypeArray* ps, // S配列
TypeArray* pd, // D配列
BYTE lut[] // LUT(256×垂直幅)
);
void makeCvtLineLUTSingle( // LUT作成:輝度補正用
BYTE lut[], // LUTポインタ
int maxData // 最大値 1..1023
);
int makeCvtLineLUT( // LUT作成:輝度補正用
BYTE lut[], // LUT(256×水平/垂直幅)
BYTE tbl[], // 割合テーブル「0..255」
int len // 水平/垂直幅
);
int makeCvtLineLUT( // LUT作成:輝度補正用
BYTE lut[], // LUT(256×水平/垂直幅)
UWORD tbl[], // 割合テーブル「0..1023」
int len // 水平/垂直幅
);
void BinarizationMyselfBase( // 自身2値化:水平方向:BYTE
BYTE *p, // 画像ポインタ
int h, // 水平幅
int data // 出力値:≠0時
);
void BinarizationNonZeoBase( // 2値化:水平方向:BYTE
BYTE *ps, // S画像ポインタ
BYTE *pd, // D画像ポインタ
int h, // 水平幅
int data // 出力値:≠0時
);
void BinarizationXYBase( // 2値化:水平方向:BYTE:部分
BYTE *ps, // S画像ポインタ
BYTE *pd, // D画像ポインタ
int h, // 水平幅
int t, // しきい値 0..255
int data = 255, // 出力値:高位
int low = 0 // 出力値:低位
);
void ConvertRgbToMonoBase( // カラー変換(RGB→輝度):水平方向
BYTE* pr, // ポインタ:赤
BYTE* pg, // ポインタ:緑
BYTE* pb, // ポインタ:青
BYTE* pd, // ポインタ:結果
int h ); // 画像の水平サイズ
void ConvertRgbToDiffBase( // カラー変換(RGB→色差):水平方向
BYTE* pr, // ポインタ:赤
BYTE* pg, // ポインタ:緑
BYTE* pb, // ポインタ:青
BYTE* pY, // ポインタ:結果:輝度
char* pRY, // ポインタ:結果:R-Y
char* pBY, // ポインタ:結果:B-Y
int h ); // 画像の水平サイズ
void ConvertDiffToRgbBase( // カラー変換(色差→RGB):水平方向
BYTE* pY, // ポインタ:輝度
char* pRY, // ポインタ:R-Y
char* pBY, // ポインタ:B-Y
BYTE* pr, // ポインタ:結果:赤
BYTE* pg, // ポインタ:結果:緑
BYTE* pb, // ポインタ:結果:青
int h ); // 画像の水平サイズ
void ConvertBmpToMonoBase( // カラー変換(BmpBGR→輝度):水平方向
BYTE* pbgr, // ポインタ:青緑赤
BYTE* pd, // ポインタ:結果
int h ); // 画像の水平サイズ
void ConvertBmpToSingleBase( // カラー変換(BmpBGR→(単独の赤,緑,青)):水平方向
BYTE* pbgr, // ポインタ:青緑赤
BYTE* pd, // ポインタ:単独の赤,緑,青
int sel, // 0:赤,1:緑,2:青
int h ); // 画像の水平サイズ
void EraseMinusImageBase( // 負画像消去:水平方向
char *p, // 画像ポインタ
int h ); // 画像の水平サイズ
int make_lut_3_xy( // LUT作成:座標間直線用座標取出
BYTE lut[], // 作成するLUT
int *ptx, // x座標TablePtr
int *pty, // y座標TablePtr
int l, // 上記の組の数
int size // LUTの大きさ
);
int make_lut_4_xy( // LUT作成:座標間曲線用座標取出
BYTE lut[], // 作成するLUT
int tblx[], // x座標Table
int tbly[], // y座標Table
int l // 上記の組の数
);
void curve_lut( // LUT作成:任意曲線:基本部
BYTE lut[], // LUT
int tblx[], // x座標Table
int tbly[], // y座標Table
int sw // -1:前、0:中、1:後
);
int make_lut_xy( // LUT作成:直線/曲線座標取出
BYTE lut[], // 作成するLUT
int k, // 3:直線/4:曲線
int *ptr_arg, // 引数Ptr
int l, // 上記の引数の数
int size // LUTの大きさ
);
void set_lut( // LUT作成:コピー/反転コピー
const BYTE *pat, // 元パターンのポインタ
BYTE lut[], // 反転するLUT
int sw // 反転sw(0:無/1:反転)
);
void lut_6_0( // LUT作成:疑似カラー:8色
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
void lut_6_1( // LUT作成:疑似カラー:16色
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
void lut_6_23_base( // LUT:疑似Color寒暖/色相傾斜
BYTE lut[], // 作成するLUT
const short *pt // 傾斜PatternTablePtr
);
void lut_6_2( // LUT作成:疑似:寒色→暖色
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
void lut_6_3( // LUT作成:色相、赤→黄→青→紫
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
void lut_6_4( // LUT作成:疑似:パターンの圧縮
BYTE lut[], // 作成するLUT
int n // 色圧縮 0: 32,1: 64
); // 2:128,3:256
void lut_6_10_11_base( // LUT作成:色抽出表示用:基本
BYTE lut[], // 作成するLUT
const BYTE *pt // 8色パターンテーブル
);
void lut_6_10( // LUT作成:色抽出表示用:RGB
BYTE lut[], // 作成するLUT
int col // 色選択子 0:R,1:G,2:B
);
void lut_6_11( // LUT作成:色抽出表示用:色差
BYTE lut[], // 作成するLUT
int col // 色選択子 0:輝度
// 1:RY
); // 2:BY
private:
void sort_key( // キー付き昇順ソート
TypeSort *pl, // データの左側Ptr
TypeSort *pr // データの右側Ptr
);
void sort_key_rev( // キー付き降順ソート
TypeSort *pl, // データの左側Ptr
TypeSort *pr // データの右側Ptr
);
void hist_byte( // HistSort用ヒストグラム:BYTE
int hist[], // ヒストグラム配列
BYTE *p, // データ配列のPtr
int l // 配列のサイズ
);
void sort_byte_hist( // HistSort:BYTE
int sw, // 0:昇順、1:降順
BYTE *p, // データ配列のPtr
int l // 配列のサイズ
);
void sort_byte_0( // 昇順ソート:BYTE
BYTE *pl, // データの左側Ptr
BYTE *pr // データの右側Ptr
);
void sort_byte_1( // 降順ソート:BYTE
BYTE *pl, // データの左側Ptr
BYTE *pr // データの右側Ptr
);
void sort_short_0( // 昇順ソート:short
short *pl, // データの左側Ptr
short *pr // データの右側Ptr
);
void sort_short_1( // 降順ソート:short
short *pl, // データの左側Ptr
short *pr // データの右側Ptr
);
void sort_long_0( // 昇順ソート:long
long *pl, // データの左側Ptr
long *pr // データの右側Ptr
);
void sort_long_1( // 降順ソート:long
long *pl, // データの左側Ptr
long *pr // データの右側Ptr
);
void sort_long_0_key( // 昇順KeySort:Key=long,ix=short
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_long_1_key( // 降順KeySort:Key=long,ix=short
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_float_0( // 昇順ソート:float
float *pl, // データの左側Ptr
float *pr // データの右側Ptr
);
void sort_float_1( // 降順ソート:float
float *pl, // データの左側Ptr
float *pr // データの右側Ptr
);
void sort_float_0_key( // 昇順KeySort:Key=float,ix=short
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_float_1_key( // 降順KeySort:Key=float,ix=short
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_double_0( // 昇順ソート:double
double *pl, // データの左側Ptr
double *pr // データの右側Ptr
);
void sort_double_1( // 降順ソート:double
double *pl, // データの左側Ptr
double *pr // データの右側Ptr
);
void sort_double_0_key( // 昇順KeySort:Key=double,ix=short
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_double_1_key( // 降順KeySort:Key=double,ix=short
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_int64_0( // 昇順ソート:64Bit整数
__int64 *pl, // データの左側Ptr
__int64 *pr // データの右側Ptr
);
void sort_int64_1( // 降順ソート:64Bit整数
__int64 *pl, // データの左側Ptr
__int64 *pr // データの右側Ptr
);
void sort_int64_0_key( // 昇順KeySort:Key=64Bit整数,ix=short
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sort_int64_1_key( // 降順KeySort:Key=64Bit整数,ix=short
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
void sortTypeCorr0( // 昇順ソート:TypeCorr
TypeCorr *pl, // データの左側Ptr
TypeCorr *pr // データの右側Ptr
);
void sortTypeCorr1( // 降順ソート:TypeCorr
TypeCorr *pl, // データの左側Ptr
TypeCorr *pr // データの右側Ptr
);
void sortTypeCorrIX0( // 昇順ソート:TypeCorrIX
TypeCorrIX *pl, // データの左側Ptr
TypeCorrIX *pr // データの右側Ptr
);
void sortTypeCorrIX1( // 降順ソート:TypeCorrIX
TypeCorrIX *pl, // データの左側Ptr
TypeCorrIX *pr // データの右側Ptr
);
void sortXTypeXY0( // 昇順ソート:TypeXY:X座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
void sortXTypeXY1( // 降順ソート:TypeXY:X座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
void sortYTypeXY0( // 昇順ソート:TypeXY:Y座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
void sortYTypeXY1( // 降順ソート:TypeXY:Y座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
void sortXTypeXYF0( // 昇順ソート:TypeXYF:X座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
void sortXTypeXYF1( // 降順ソート:TypeXYF:X座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
void sortYTypeXYF0( // 昇順ソート:TypeXYF:Y座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
void sortYTypeXYF1( // 降順ソート:TypeXYF:Y座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
void sortXTypeXYD0( // 昇順ソート:TypeXYD:X座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
void sortXTypeXYD1( // 降順ソート:TypeXYD:X座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
void sortYTypeXYD0( // 昇順ソート:TypeXYD:Y座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
void sortYTypeXYD1( // 降順ソート:TypeXYD:Y座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
void sortXTypeXYHV0( // 昇順ソート:TypeXYHV:X座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
void sortXTypeXYHV1( // 降順ソート:TypeXYHV:X座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
void sortYTypeXYHV0( // 昇順ソート:TypeXYHV:Y座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
void sortYTypeXYHV1( // 降順ソート:TypeXYHV:Y座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
void sortXTypeXYHVIX0( // 昇順ソート:TypeXYHVIX:X座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
void sortXTypeXYHVIX1( // 降順ソート:TypeXYHVIX:X座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
void sortYTypeXYHVIX0( // 昇順ソート:TypeXYHVIX:Y座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
void sortYTypeXYHVIX1( // 降順ソート:TypeXYHVIX:Y座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
void sortAreaTypeSf0( // 昇順ソート:TypeSf:面積
TypeSf *pl, // データの左側Ptr
TypeSf *pr // データの右側Ptr
);
void sortAreaTypeSf1( // 降順ソート:TypeSf:面積
TypeSf *pl, // データの左側Ptr
TypeSf *pr // データの右側Ptr
);
void sortAreaTypeMB0( // 昇順ソート:TypeMB:面積
TypeMB *pl, // データの左側Ptr
TypeMB *pr // データの右側Ptr
);
void sortAreaTypeMB1( // 降順ソート:TypeMB:面積
TypeMB *pl, // データの左側Ptr
TypeMB *pr // データの右側Ptr
);
void sort_single( // 配列1個:ソート
int sw, // 0:昇順、1:降順
TypeArray *pa, // 配列情報
int l // 配列のサイズ
);
int eq_sort_byte( // MultSort用同一Data数算出:BYTE
BYTE *p, // ポインタ
int l // サイズ
);
int eq_sort_short( // MultSort用同一Data数算出:short
short *p, // ポインタ
int l // サイズ
);
int eq_sort_long( // MultSort用同一Data数算出:long
long *p, // ポインタ
int l // サイズ
);
int eq_sort_float( // MultSort用同一Data数算出:float
float *p, // ポインタ
int l // サイズ
);
int eq_sort_double( // MultSort用同一Data数算出:double
double *p, // ポインタ
int l // サイズ
);
int eq_sort( // MultSort用同一データ数算出
TypeArray *pa, // 配列情報
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
int mult_sort( // マルチSORT
BYTE *ptrsw, // 0:昇順、1:降順
TypeArray *pa, // 配列1~100の情報
int n, // 配列の個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
// 先頭配列をキーとして以降をそれに従って変更する場合のマルチソート
int sort_mult_short( // short配列群:内部添字=short
int sw, // 0:昇順、1:降順
short *pkey, // 配列情報:キー
short **pa, // 配列情報:従属
int n, // 配列個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
int sort_mult_short_ext( // short配列群:内部添字=short
int sw, // 0:昇順、1:降順
short *pkey, // 配列情報:キー
short **pa, // 配列情報:従属
int n, // 配列個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
int mult_sort_short( // マルチソートshort配列群用
BYTE *ptrsw, // 0:昇順、1:降順
short **pa, // 配列1~100の情報
int n, // 配列の個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
void sort_byte_0_key_ext( // 昇順KeySort:Key=BYTE,ix=int
BYTE *pl, // KeyDataの左側Ptr
BYTE *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_byte_1_key_ext( // 降順KeySort:Key=BYTE,ix=int
BYTE *pl, // KeyDataの左側Ptr
BYTE *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_short_0_key_ext( // 昇順KeySort:Key=short,ix=int
short *pl, // KeyDataの左側Ptr
short *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_short_1_key_ext( // 降順KeySort:Key=short,ix=int
short *pl, // KeyDataの左側Ptr
short *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_long_0_key_ext( // 昇順KeySort:Key=long,ix=int
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_long_1_key_ext( // 降順KeySort:Key=long,ix=int
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_float_0_key_ext( // 昇順KeySort:Key=float,ix=int
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_float_1_key_ext( // 降順KeySort:Key=float,ix=int
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_double_0_key_ext( // 昇順KeySort:Key=double,ix=int
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_double_1_key_ext( // 降順KeySort:Key=double,ix=int
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_int64_0_key_ext( // 昇順KeySort:Key=64Bit整数,ix=int
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
void sort_int64_1_key_ext( // 降順KeySort:Key=64Bit整数,ix=int
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
private:
void make_134_pattern_8( //
TypeArray *pd, // D配列
int init_data, // 初期値データ
int init_inc ); // 初期値増加値
void make_134_pattern_16( //
TypeArray *pd, // D配列
int init_data, // 初期値データ
int init_inc ); // 初期値増加値
void make_134_pattern_32( //
TypeArray *pd, // D配列
int init_data, // 初期値データ
int init_inc ); // 初期値増加値
int make_134_pattern( //
TypeArray *pd, // D配列
int data, // データ
int inc ); // 増加値
int make2pattern( //
TypeArray *pd, // D配列
int data ); // 初期値データ
void make_56_pattern( //
TypeArray *pd, // D配列
int x, // x座標始点
int y, // y座標始点
int h, // 水平幅
int v, // 垂直幅
int d ); // 書き込みデータ
int make5pattern( //
TypeArray *pd, // D配列
int color ); // 色の選択子
int make6pattern( //
TypeArray *pd, // D配列
int color ); // 色の選択子
private: // 拡大・縮小
void magnifyX1( //
int zh, // 水平拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh ); // D配列水平幅
void magnifyX2( //
int zh, // 水平拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
void magnifyX3( //
int zh, // 水平拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
void magnifyXX( //
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 4..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
void magnifyX( //
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
void magnifyXExt( // X方向拡大:拡張版
BYTE *buf, // 作業用バッファー
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl, // 増加幅:D
int dataSize ); // 画素サイズ(1,2,3...)
void magnifyXExtColor( // X方向拡大:カラー拡張版
BYTE *buf, // 作業用バッファー
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
void makeMagnifyFX( // 拡大/縮小X座標テーブル作成
short *ptbl, // x座標TablePtr
double zh, // 水平拡大率
int h, // 水平幅
int dataSize ); // 画素サイズ(1,2,3...)
void magnifyFX8( // 拡大/縮小:8bit
short *ptbl, // x座標TablePtr
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int h ); // 水平幅
void magnifyFX16( // 拡大/縮小:16bit
short *ptbl, // x座標TablePtr
short *ps, // S配列実Ptr
short *pd, // D配列実Ptr
int h ); // 水平幅
void magnifyFX32( // 拡大/縮小:32bit
short *ptbl, // x座標TablePtr
long *ps, // S配列実Ptr
long *pd, // D配列実Ptr
int h ); // 水平幅
void makeMagnifyInterpolate( // 拡大/縮小X座標テーブル作成
short tbl[], // 座標TablePtr
float tblR[], // 座標存在率TablePtr
double z, // 拡大縮小率
int len, // テーブル長
int lenOrg, // 拡大縮小前の長さ
double offset, // 微少座標オフセット
int dataSize ); // 画素サイズ(1,2,3...)
int makeMagnifyInterpolate( // 拡大/縮小X座標テーブル作成
short tbl[], // 座標TablePtr
int tblR[], // 座標存在率×2048TablePtr
double z, // 拡大縮小率
int len, // テーブル長
int lenOrg, // 拡大縮小前の長さ
double offset, // 微少座標オフセット
int dataSize ); // 画素サイズ(1,2,3...)
void magnifyZoomInterpolateByte( // 拡大・縮小:補間:BYTE
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
int tblRX[], // X座標存在率×2048TablePtr
int tblRY[], // Y座標存在率×2048TablePtr
int dataSize ); // 画素サイズ
void magnifyZoomInterpolateShort( // 拡大・縮小:補間:Short
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
float tblRX[], // X座標存在率TablePtr
float tblRY[], // Y座標存在率TablePtr
int dataSize ); // 画素サイズ
void magnifyZoomInterpolateLong( // 拡大・縮小:補間:Long
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
float tblRX[], // X座標存在率TablePtr
float tblRY[], // Y座標存在率TablePtr
int dataSize ); // 画素サイズ
void magnifyZoomInterpolateFloat( // 拡大・縮小:補間:単精度
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
float tblRX[], // X座標存在率TablePtr
float tblRY[], // Y座標存在率TablePtr
int dataSize ); // 画素サイズ
void magnifyAverageX( // 縮小:平均化:水平方向縮小
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int zh, // 水平縮小率 1,2,3,4
int sw ); // sw=偽→平均、真→合計
void magnifyAverageY( // 縮小:平均化:垂直方向縮小
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int zv, // 垂直縮小率 1,2,3,4
int sw ); // sw=偽→平均、真→合計
private: // 鏡像
void mirrorByte_1( // 鏡像BYTE:左右
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorByte_2( // 鏡像BYTE:上下
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorByteColor_1( // 鏡像BYTE:左右
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorByteExt_1( // 鏡像BYTE:左右
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int dataSize ); // 画素サイズ
void mirrorByte( // 鏡像BYTE単位
BYTE *ps, // S配列の実Adr
BYTE *pd, // D配列の実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int k, // 1:左右反転
// 2:上下反転
// 3:上下左右反転
int dataSize ); // 画素サイズ
void mirrorShort_1( // 鏡像:Short左右
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorShort_2( // 鏡像:Short上下
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorShortColor_1( // 鏡像:Short左右
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorShortExt_1( // 鏡像:Short左右
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int dataSize ); // 画素サイズ
void mirrorShort( // 鏡像:Short単位
short *ps, // S配列の実Adr
short *pd, // D配列の実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int k, // 1:左右反転
// 2:上下反転
// 3:上下左右反転
int dataSize ); // 画素サイズ
void mirrorLong_1( // 鏡像:Long左右
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorLong_2( // 鏡像:Long上下
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorLongColor_1( // 鏡像:Long左右
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
void mirrorLongExt_1( // 鏡像:Long左右
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int dataSize ); // 画素サイズ
void mirrorLong( // 鏡像:Long単位
long *ps, // S配列の実Adr
long *pd, // D配列の実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int k, // 1:左右反転
// 2:上下反転
// 3:上下左右反転
int dataSize ); // 画素サイズ
(4-12-42)関数「int copy_even(
TypeArray* ps,TypeArray* pd);」
int copy_even( // 転送:同単位
TypeArray *ps, // S配列
TypeArray *pd ); // D配列
「even」は、英単語「even」カタカナ語でイーブン、
ここでは、対等とかの意味を採用し元画像の
仮引数「TypeArray* ps,」と結果画像の
仮引数「TypeArray* pd」のバイトサイズ&整数・
実数型が同じ場合のコピー(転送)です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-43)関数「int copy_diff(
TypeArray* ps,TypeArray* pd);」
int copy_diff( // 転送:異単位
TypeArray *ps, // S配列
TypeArray *pd ); // D配列
「diff」は、英単語「difference」の省略で「違い」を
意味!ここでは、元画像の仮引数「TypeArray* ps,」と
結果画像の仮引数「TypeArray* pd」のバイトサイズ&
整数・実数型が異なる場合のコピー(転送)です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-44)関数「void copy_h(
TypeArray* ps,TypeArray* pd,int y);」
void copy_h( // 周囲転送用:水平線コピー
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int y ); // y座標
関数「CopyRoundImage()」のサブルーチンです!
「_h」は、水平線を示します!詰り、周囲コピーの水平線
部分です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-45)関数「void copy_v(
TypeArray* ps,TypeArray* pd,int x);」
void copy_v( // 周囲転送用:垂直線コピー
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int x ); // x座標
関数「CopyRoundImage()」のサブルーチンです!
「_v」は、垂直線を示します!詰り、周囲コピーの垂直線
部分です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-46)関数「void copyFieldFrameBase(
long *ps,long *pd,int h,int v,int incS,int incD);」
void copyFieldFrameBase( // フィールドからフレーム画像への基本コピー
long* ps, // S:long単位ポインタ
long* pd, // D:long単位ポインタ
int h, // 水平幅:long単位
int v, // 垂直幅:S画像
int incS, // S:増加幅:long単位
int incD ); // S:増加幅:long単位
関数「CopyFieldFrame()」のサブルーチンです!
★注意★仮引数「long *ps,long *pd,」と成って居る
のは、4バイト(32ビット)単位≪1バイト画素が4個≫
が使える条件下での高速処理用です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-47)関数「int repair0Image(
TypeArray* pa,int tbl[],int n);」
int repair0Image( // 欠陥画素修復:モード0:前詰め
TypeArray* pa, // 配列
int tbl[], // 欠陥場所テーブル
int n ); // 欠陥個数
関数「RepairImage()」のサブルーチンです!
この「モード0」は、欠陥画素を前詰めで補正する方式です
★注意★特殊なラインセンサーCCD用に開発した特殊用途
です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-48)関数「int repair1Image(
TypeArray* pa,int tbl[],int n);」
int repair1Image( // 欠陥画素修復:モード1:補間
TypeArray* pa, // 配列
int tbl[], // 欠陥場所テーブル
int n ); // 欠陥個数
関数「RepairImage()」のサブルーチンです!
この「モード1」は、欠陥画素を平均値で補正する方式です
★注意★特殊なラインセンサーCCD用に開発した特殊用途
です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-49)関数「void repair1Imagebyte(
TypeArray* pa,int x,int x0);」
void repair1ImageByte( // 欠陥画素修復:補間:BYTE
TypeArray* pa, // 配列
int x, // 欠陥場所
int x0 ); // 欠陥場所の隣
関数「repair1Image()」のサブルーチンです!
この「BYTE 」は、画素が1バイト単位の場合の処理です!
★注意★特殊なラインセンサーCCD用に開発した特殊用途
です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-50)関数「void repair1ImageShort (TypeArray* pa,int x,int x0);」
void repair1ImageShort( // 欠陥画素修復:補間:2BYTE
TypeArray* pa, // 配列
int x, // 欠陥場所
int x0 ); // 欠陥場所の隣
関数「repair1Image()」のサブルーチンです!
この「short 」は、画素が2バイト単位の場合の処理です!
★注意★特殊なラインセンサーCCD用に開発した特殊用途
です!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!
(4-12-51)関数「void convert_b_b_x(
BYTE *ps,BYTE *pd,BYTE lut[],int h);」
void convert_b_b_x( // LUT変換:BYTE→BYTE:水平
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
BYTE lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_b_b_x」は、画素単位で「BYTE型」から「BYTE型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-52)関数「void convert_b_b_y(
TypeArray* ps,TypeArray* pd,BYTE lut[]);」
void convert_b_b_y( // LUT変換:BYTE→BYTE:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_b_y」は、画素単位で「BYTE型」から「BYTE型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_b_b_x()」を内部で呼び出し全体とし
て画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-53)関数「int convert_b_b(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_b_b( // LUT変換:BYTE→BYTE:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_b」は、画素単位で「BYTE型」から「BYTE型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-54)関数「void convert_b_s_x(
BYTE *ps,short *pd,short lut[],int h);」
void convert_b_s_x( // LUT変換:BYTE→short:水平
BYTE *ps, // S配列実Ptr
short *pd, // D配列実Ptr
short lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_b_s_x」は、画素単位で「BYTE型」から「short型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-55)関数「void convert_b_s_y(
TypeArray* ps,TypeArray* pd,short lut[]);」
void convert_b_s_y( // LUT変換:BYTE→short:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_s_y」は、画素単位で「BYTE型」から「short型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_b_s_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-56)関数「int convert_b_s(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_b_s( // LUT変換:BYTE→short:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_s」は、画素単位で「BYTE型」から「short型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-57)関数「convert_b_l_x(
BYTE *ps,long *pd,long lut[],int h);」
void convert_b_l_x( // LUT変換:BYTE→long:水平
BYTE *ps, // S配列実Ptr
long *pd, // D配列実Ptr
long lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_b_l_x」は、画素単位で「BYTE型」から「long型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-58)関数「void convert_b_l_y(
TypeArray* ps,TypeArray* pd,long lut[]);」
void convert_b_l_y( // LUT変換:BYTE→long:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
long lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_l_y」は、画素単位で「BYTE型」から「long型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_b_l_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-59)関数「int convert_b_l(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_b_l( // LUT変換:BYTE→long:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_l」は、画素単位で「BYTE型」から「long型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-60)関数「convert_b_f_x(
BYTE ps,floatpd,floatlut[],int h);」
void convert_b_f_x( // LUT変換:BYTE→float:水平
BYTE *ps, // S配列実Ptr
float *pd, // D配列実Ptr
float lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_b_f_x」は、画素単位で「BYTE型」から「float型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-61)関数「void convert_b_f_y(
TypeArray* ps,TypeArray* pd,floatlut[]);」
void convert_b_f_y( // LUT変換:BYTE→float:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
float lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_f_y」は、画素単位で「BYTE型」から「float型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_b_f_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-62)関数「int convert_b_f(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_b_f( // LUT変換:BYTE→float:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_f」は、画素単位で「BYTE型」から「float型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-63)関数「convert_b_d_x(
BYTE ps,floatpd,double lut[],int h);」
void convert_b_d_x( // LUT変換:BYTE→double:水平
BYTE *ps, // S配列実Ptr
double *pd, // D配列実Ptr
double lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_b_d_x」は、画素単位で「BYTE型」から「double型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-64)関数「void convert_b_d_y(
TypeArray* ps,TypeArray* pd,double lut[]);」
void convert_b_d_y( // LUT変換:BYTE→double:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
double lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_d_y」は、画素単位で「BYTE型」から「double型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_b_d_x()」を内部で呼び出し全
体として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-65)関数「int convert_b_d(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_b_d( // LUT変換:BYTE→double:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_b_d」は、画素単位で「BYTE型」から「double型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-66)関数「int convert_b(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_b( // LUT変換:BYTE→汎用
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT配列
);
関数「int Convert()」のサブルーチンです!
「_b」は、画素単位で「BYTE型」から「その他の型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-67)関数「void convert_w_b_x(
UWORD*ps,BYTE *pd,BYTE lut[],int h);」
void convert_w_b_x( // LUT変換:UWORD→BYTE:水平
UWORD *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
BYTE lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_w_b_x」は、画素単位で「UWORD型」から「BYTE型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-68)関数「void convert_w_b_y(
TypeArray* ps,TypeArray* pd,BYTE lut[],int h);」
void convert_w_b_y( // LUT変換:UWORD→BYTE:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_b_y」は、画素単位で「UWORD型」から「BYTE型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_w_b_x()」を内部で呼び出し全体と
して画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-69)関数「int convert_w_b(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_w_b( // LUT変換:UWORD→BYTE:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_b」は、画素単位で「UWORD型」から「BYTE型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-70)関数「void convert_w_s_x(
UWORD*ps,short *pd,short lut[],int h);」
void convert_w_s_x( // LUT変換:UWORD→short:水平
UWORD *ps, // S配列実Ptr
short *pd, // D配列実Ptr
short lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_w_s_x」は、画素単位で「UWORD型」から「short型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-71)関数「void convert_w_s_y(
TypeArray* ps,TypeArray* pd,short lut[],int h);」
void convert_w_s_y( // LUT変換:UWORD→short:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_s_y」は、画素単位で「UWORD型」から「short型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_w_s_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-72)関数「int convert_w_s(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_w_s( // LUT変換:UWORD→short:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_s」は、画素単位で「UWORD型」から「short型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-73)関数「void convert_w_l_x(
UWORD*ps,long *pd,long lut[],int h);」
void convert_w_l_x( // LUT変換:UWORD→long:水平
UWORD *ps, // S配列実Ptr
long *pd, // D配列実Ptr
long lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_w_l_x」は、画素単位で「UWORD型」から「long型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-74)関数「void convert_w_l_y(
TypeArray* ps,TypeArray* pd,long lut[],int h);」
void convert_w_l_y( // LUT変換:UWORD→long:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
long lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_l_y」は、画素単位で「UWORD型」から「long型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_w_l_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-75)関数「int convert_w_l(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_w_l( // LUT変換:UWORD→long:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_l」は、画素単位で「UWORD型」から「long型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-76)関数「void convert_w_f_x(
UWORD*ps,float*pd,float lut[],int h);」
void convert_w_f_x( // LUT変換:UWORD→float:水平
UWORD *ps, // S配列実Ptr
float *pd, // D配列実Ptr
float lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_w_f_x」は、画素単位で「UWORD型」から「float型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-77)関数「void convert_w_f_y(
TypeArray* ps,TypeArray* pd,float lut[],int h);」
void convert_w_f_y( // LUT変換:UWORD→float:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
float lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_f_y」は、画素単位で「UWORD型」から「float型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_w_f_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-78)関数「int convert_w_f(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_w_f( // LUT変換:UWORD→float:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_f」は、画素単位で「UWORD型」から「float型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-79)関数「void convert_w_d_x(
UWORD*ps,double *pd,double lut[],int h);」
void convert_w_d_x( // LUT変換:UWORD→double:水平
UWORD *ps, // S配列実Ptr
double *pd, // D配列実Ptr
double lut[], // LUT
int h // 水平幅
);
関数「int Convert()」のサブルーチンです!
「_w_d_x」は、画素単位で「UWORD型」から「double型」へ
変換し、X座標(水平方向)に処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-80)関数「void convert_w_d_y(
TypeArray* ps,TypeArray* pd,double lut[]);」
void convert_w_d_y( // LUT変換:UWORD→double:垂直
TypeArray *ps, // S配列
TypeArray *pd, // D配列
double lut[] // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_d_y」は、画素単位で「UWORD型」から「double型」へ
変換しますが、Y座標(垂直方向)に処理するサブルーチン
で無く関数「convert_w_d_x()」を内部で呼び出し全体
として画像単位で処理するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-81)関数「int convert_w_d(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_w_d( // LUT変換:UWORD→double:基本
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT
);
関数「int Convert()」のサブルーチンです!
「_w_l」は、画素単位で「UWORD型」から「double型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-82)関数「int convert_w(
TypeArray* ps,TypeArray* pd,TypeArray* lut);」
int convert_w( // LUT変換:UWORD→汎用
TypeArray *ps, // S配列
TypeArray *pd, // D配列
TypeArray *lut // LUT配列
);
関数「int Convert()」のサブルーチンです!
「_w」は、画素単位で「UWORD型」から「その他の型」へ
変換するサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-83)関数「int cvt_byte_b(
TypeArray* ps,TypeArray* pd,BYTE *lut);」
int cvt_byte_b( // LUT変換:S=BYTE,LUT=BYTE
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE *lut // LUTポインタ
);
「cvt」は、「Convert」の省略で
「byte_b」は、元画像「TypeArray* ps,」と
「BYTE型」で変換するLUTも「BYTE型」に成る
関数「int Convert()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-84)関数「int cvt_byte_w(
TypeArray* ps,TypeArray* pd,BYTE *lut);」
int cvt_byte_w( // LUT変換:S=UWORD,LUT=BYTE
TypeArray *ps, // S配列
TypeArray *pd, // D配列
BYTE *lut // LUTポインタ
);
「cvt」は、「Convert」の省略で
「byte_w」は、元画像「TypeArray* ps,」と
「UWORD型」で変換するLUTが「BYTE型」に成る
関数「int Convert()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-85)関数「int cvt_word_b(
TypeArray* ps,TypeArray* pd,short *lut);」
int cvt_word_b( // LUT変換:S=BYTE,LUT=short
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short *lut // LUTポインタ
);
「cvt」は、「Convert」の省略で
「word_b」は、元画像「TypeArray* ps,」が
「BYTE型」で変換するLUTが「short型と言う依り
UWORD型と2バイト単位」に成る
関数「int Convert()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-86)関数「int cvt_word_w(
TypeArray* ps,TypeArray* pd,short lut);」
int cvt_word_w( // LUT変換:S=UWORD,LUT=short
TypeArray *ps, // S配列
TypeArray *pd, // D配列
short *lut // LUTポインタ
);
「cvt」は、「Convert」の省略で
「word_b」は、元画像「TypeArray ps,」が
「UWORD型」で変換するLUTが「short型と言う依り
UWORD型と2バイト単位」に成る
関数「int Convert()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-87)関数「void convertLineX(
TypeArray* ps,TypeArray* pd,BYTE lut[]);」
void convertLineX( // 水平方向輝度変換
TypeArray* ps, // S配列
TypeArray* pd, // D配列
BYTE lut[] // LUT(256×水平幅)
);
関数「int ConvertLine()」のサブルーチンです!
★注意★ここで「Line」名称は、「一次元配列」の意味
ではありません?!
特殊用途で「Lineライン=線分(縦方向・横方向)」の
意味です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-88)関数「void convertLineY(
TypeArray* ps,TypeArray* pd,BYTE lut[]);」
void convertLineY( // 垂直方向輝度変換
TypeArray* ps, // S配列
TypeArray* pd, // D配列
BYTE lut[] // LUT(256×垂直幅)
);
関数「int ConvertLine()」のサブルーチンです!
★注意★ここで「Line」名称は、「一次元配列」の意味
ではありません?!
特殊用途で「Lineライン=線分(縦方向・横方向)」の
意味です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-89)関数「void makeCvtLineLUTSingle(
BYTE lut[],int maxData);」
void makeCvtLineLUTSingle( // LUT作成:輝度補正用
BYTE lut[], // LUTポインタ
int maxData // 最大値 1..1023
);
関数「int ConvertLine()」のサブルーチンです!
上記の関数用のLUTパターン発生用です!
★注意★ここで「Line」名称は、「一次元配列」の意味
ではありません?!
特殊用途で「Lineライン=線分(縦方向・横方向)」の
意味です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-90)関数「int makeCvtLineLUT(
BYTE lut[],BYTE tbl[],int len);」
int makeCvtLineLUT( // LUT作成:輝度補正用
BYTE lut[], // LUT(256×水平/垂直幅)
BYTE tbl[], // 割合テーブル「0..255」
int len // 水平/垂直幅
);
関数「int ConvertLine()」のサブルーチンです!
上記の関数用のLUTパターン発生用です!
そして関数「void makeCvtLineLUTSingle()」を
サブルーチンとして使用します!
★注意★ここで「Line」名称は、「一次元配列」の意味
ではありません?!
特殊用途で「Lineライン=線分(縦方向・横方向)」の
意味です!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-91)関数「int makeCvtLineLUT(
BYTE lut[],UWORDtbl[],int len);」
int makeCvtLineLUT( // LUT作成:輝度補正用
BYTE lut[], // LUT(256×水平/垂直幅)
UWORD tbl[], // 割合テーブル「0..1023」
int len // 水平/垂直幅
);
関数「int ConvertLine()」のサブルーチンです!
上記の関数用のLUTパターン発生用です!
そして関数「void makeCvtLineLUTSingle()」を
サブルーチンとして使用します!
★注意★ここで「Line」名称は、「一次元配列」の意味
ではありません?!
特殊用途で「Lineライン=線分(縦方向・横方向)」の
意味です!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-92)関数「void BinarizationMyselfBase(
BYTE *p,int h,int data);」
void BinarizationMyselfBase( // 自身2値化:水平方向:BYTE
BYTE *p, // 画像ポインタ
int h, // 水平幅
int data // 出力値:≠0時
);
関数「BinarizationMyself()」のサブルーチンです!
2値化系のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-93)関数「void BinarizationNonZeoBase(
BYTE *ps,BYTE *pd,int h,int data);」
void BinarizationNonZeoBase( // 2値化:水平方向:BYTE
BYTE *ps, // S画像ポインタ
BYTE *pd, // D画像ポインタ
int h, // 水平幅
int data // 出力値:≠0時
);
関数「BinarizationNonZeo()」のサブルーチンです!
2値化系のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-94)関数「void BinarizationXYBase(
BYTE *ps,BYTE *pd,
int h,int t,int data=255,int low=0);」
void BinarizationXYBase( // 2値化:水平方向:BYTE:部分
BYTE *ps, // S画像ポインタ
BYTE *pd, // D画像ポインタ
int h, // 水平幅
int t, // しきい値 0..255
int data = 255, // 出力値:高位
int low = 0 // 出力値:低位
);
関数「BinarizationXY()」のサブルーチンです!
2値化系のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-95)関数「void ConvertRgbToMonoBase(
BYTE *pr,BYTE *pg,BYTE *pb,BYTE *pd,int h);」
void ConvertRgbToMonoBase( // カラー変換(RGB→輝度):水平方向
BYTE* pr, // ポインタ:赤
BYTE* pg, // ポインタ:緑
BYTE* pb, // ポインタ:青
BYTE* pd, // ポインタ:結果
int h ); // 画像の水平サイズ
関数「ConvertRgbToMono()」のサブルーチンです!
RGB3画像画素から輝度結果「BYTE *pd,」変換用の
基本関数です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-96)関数「void ConvertRgbToDiffBase(
BYTE *pr,BYTE *pg,BYTE pb,
BYTE pY,char*pRY,char*pBY,
int h);」
void ConvertRgbToDiffBase( // カラー変換(RGB→色差):水平方向
BYTE* pr, // ポインタ:赤
BYTE* pg, // ポインタ:緑
BYTE* pb, // ポインタ:青
BYTE* pY, // ポインタ:結果:輝度
char* pRY, // ポインタ:結果:R-Y
char* pBY, // ポインタ:結果:B-Y
int h ); // 画像の水平サイズ
関数「ConvertRgbToDiff()」のサブルーチンです!
RGB3画像画素から色差画像画素結果
「BYTE *pY,char*pRY,char*pBY,」変換用の
基本関数です!
★注意★色差の「char*pRY,char*pBY,」と型が、
「char型」と符号有り(-128から127範囲)に成るのが
特徴です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-97)関数「void ConvertDiffToRgbBase(
BYTE *pY,char*pRY,char*pBY,
BYTE *pr,BYTE *pg,BYTE *pb,
int h);」
void ConvertDiffToRgbBase( // カラー変換(色差→RGB):水平方向
BYTE* pY, // ポインタ:輝度
char* pRY, // ポインタ:R-Y
char* pBY, // ポインタ:B-Y
BYTE* pr, // ポインタ:結果:赤
BYTE* pg, // ポインタ:結果:緑
BYTE* pb, // ポインタ:結果:青
int h ); // 画像の水平サイズ
関数「ConvertDiffToRgb()」のサブルーチンです!
色差画像画素から結果RGB3画像画素
「BYTE *pr,BYTE *pg,BYTE *pb,」変換用の
基本関数です!
★注意★色差の「char*pRY,char*pBY,」と型が、
「char型」と符号有り(-128から127範囲)に成るのが
特徴です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-98)関数「void ConvertBmpToMonoBase(
BYTE *pbgr,BYTE *pd,int h);」
void ConvertBmpToMonoBase( // カラー変換(BmpBGR→輝度):水平方向
BYTE* pbgr, // ポインタ:青緑赤
BYTE* pd, // ポインタ:結果
int h ); // 画像の水平サイズ
関数「ConvertBmpToMono()」のサブルーチンです!
BMP形式画像画素から結果モノクロ画像画素
「BYTE *pd,」変換用の基本関数です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-99)関数「void ConvertBmpToSingleBase(
BYTE *pbgr,BYTE *pd,int sel,int h);」
void ConvertBmpToSingleBase( // カラー変換(BmpBGR→(単独の赤,緑,青)):水平方向
BYTE* pbgr, // ポインタ:青緑赤
BYTE* pd, // ポインタ:単独の赤,緑,青
int sel, // 0:赤,1:緑,2:青
int h ); // 画像の水平サイズ
関数「ConvertBmpToSingle()」のサブルーチンです!
BMP形式画像画素から結果モノクロ画像画素
「BYTE *pd,」変換用の基本関数です!
★注意★仮引数「int sel,」で変換するRGB3原色を
選択出来るのが特徴です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-89)関数「void EraseMinusImageBase(char*p,int h);」
void EraseMinusImageBase( // 負画像消去:水平方向
char *p, // 画像ポインタ
int h ); // 画像の水平サイズ
関数「EraseMinusImage()」のサブルーチンです!
画素の負の値(-128から-1)画素を「0」に変換する
関数です!
★詳細★は、後で説明:【ファイル「CopyClear030.cpp」が
対象】します!
(4-12-101)関数「int make_lut_3_xy(
BYTE lut[],int *ptx,int *pty,int l,int size);」
int make_lut_3_xy( // LUT作成:座標間直線用座標取出
BYTE lut[], // 作成するLUT
int *ptx, // x座標TablePtr
int *pty, // y座標TablePtr
int l, // 上記の組の数
int size // LUTの大きさ
);
関数「Make3Lut()」のサブルーチンです!
傾きを持ったLUTパターン作成用です!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-102)関数「int make_lut_4_xy(
BYTE lut[],int tblx[],int tbly[],int l);」
int make_lut_4_xy( // LUT作成:座標間曲線用座標取出
BYTE lut[], // 作成するLUT
int tblx[], // x座標Table
int tbly[], // y座標Table
int l // 上記の組の数
);
関数「Make4Lut()」のサブルーチンです!
傾きを持ったLUTパターン作成用です!
★注意★曲線的に考えた物ですが??
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-103)関数「void curve_lut(
BYTE lut[],int tblx[],int tbly[],int sw);」
void curve_lut( // LUT作成:任意曲線:基本部
BYTE lut[], // LUT
int tblx[], // x座標Table
int tbly[], // y座標Table
int sw // -1:前、0:中、1:後
);
関数「make_lut_4_xy()」のサブルーチンです!
曲線的LUTパターン作成用です!
★注意★曲線的に考えた物ですが??詳細で残念な事を
説明する事に成るのかな??
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-104)関数「int make_lut_xy(
BYTE lut[],int k,int *ptr_arg,int l,int size);」
int make_lut_xy( // LUT作成:直線/曲線座標取出
BYTE lut[], // 作成するLUT
int k, // 3:直線/4:曲線
int *ptr_arg, // 引数Ptr
int l, // 上記の引数の数
int size // LUTの大きさ
);
関数「MakeLut()」のサブルーチンです!
傾きを持ったLUTパターン作成用です!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-105)関数「void set_lut(
const BYTE *pat,BYTE lut[],int sw);」
void set_lut( // LUT作成:コピー/反転コピー
const BYTE *pat, // 元パターンのポインタ
BYTE lut[], // 反転するLUT
int sw // 反転sw(0:無/1:反転)
);
関数「Make5Lut()」のサブルーチンです!
関数「Make8Lut()」のサブルーチンです!
パターンを上下逆さまにするルーチンです!
★注意★曲線的に考えた物ですが??
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-106)関数「void lut_6_0(
BYTE *lut,int col);」
void lut_6_0( // LUT作成:疑似カラー:8色
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-107)関数「void lut_6_1(
BYTE *lut,int col);」
void lut_6_1( // LUT作成:疑似カラー:16色
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-108)関数「void lut_6_23_base(
BYTE lut[],constshort *pt);」
void lut_6_23_base( // LUT:疑似Color寒暖/色相傾斜
BYTE lut[], // 作成するLUT
const short *pt // 傾斜PatternTablePtr
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-109)関数「void lut_6_2(
BYTE *lut,int col);」
void lut_6_2( // LUT作成:疑似:寒色→暖色
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-110)関数「void lut_6_3(
BYTE *lut,int col);」
void lut_6_3( // LUT作成:色相、赤→黄→青→紫
BYTE *lut, // 作成するLUTへのPtr
int col // 色選択子 0:R,1:G,2:B
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-111)関数「void lut_6_4(
BYTE lut[],int n);」
void lut_6_4( // LUT作成:疑似:パターンの圧縮
BYTE lut[], // 作成するLUT
int n // 色圧縮 0: 32,1: 64
); // 2:128,3:256
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-112)関数「void lut_6_10_11_base(
BYTE lut[],constBYTE *pt);」
void lut_6_10_11_base( // LUT作成:色抽出表示用:基本
BYTE lut[], // 作成するLUT
const BYTE *pt // 8色パターンテーブル
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-113)関数「void lut_6_10(
BYTE lut[],int col);」
void lut_6_10( // LUT作成:色抽出表示用:RGB
BYTE lut[], // 作成するLUT
int col // 色選択子 0:R,1:G,2:B
);
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-114)関数「void lut_6_11(
BYTE lut[],int col);」
void lut_6_11( // LUT作成:色抽出表示用:色差
BYTE lut[], // 作成するLUT
int col // 色選択子 0:輝度
// 1:RY
); // 2:BY
関数「Make6Lut()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear040.cpp」が
対象】します!
(4-12-115)関数「void sort_key(
TypeSort* pl,TypeSort* pr);」
void sort_key( // キー付き昇順ソート
TypeSort *pl, // データの左側Ptr
TypeSort *pr // データの右側Ptr
);
関数「SortIndex()」のサブルーチンです!
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-116)関数「void sort_key_rev(
TypeSort *pl,TypeSort *pr);」
void sort_key_rev( // キー付き降順ソート
TypeSort *pl, // データの左側Ptr
TypeSort *pr // データの右側Ptr
);
関数「SortIndex()」のサブルーチンです!
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-117)関数「void hist_byte(
int hist[],BYTE *p,int l);」
void hist_byte( // HistSort用ヒストグラム:BYTE
int hist[], // ヒストグラム配列
BYTE *p, // データ配列のPtr
int l // 配列のサイズ
);
関数「sort_byte_hist()」のサブルーチンです!
上記は、関数「sort_single()」のサブルーチンです!
上記は、関数「Sort()」のサブルーチンです!
★注意★「ソートアルゴリズム」に詳しい方も余り、
お馴染みで無いアルゴリズムと思いますが、限定した使用
場所では、極めて高速に動作する方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-118)関数「void sort_byte_hist(
int sw, BYTE *p,int l);」
void sort_byte_hist( // HistSort:BYTE
int sw, // 0:昇順、1:降順
BYTE *p, // データ配列のPtr
int l // 配列のサイズ
);
関数「sort_single()」のサブルーチンです!
★注意★「ソートアルゴリズム」に詳しい方も余り、
お馴染みで無いアルゴリズムと思いますが、限定した使用
場所では、極めて高速に動作する方法です!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-119)関数「void sort_byte_0(
BYTE *pl,BYTE *pr);」
void sort_byte_0( // 昇順ソート:BYTE
BYTE *pl, // データの左側Ptr
BYTE *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-120)関数「void sort_byte_1(
BYTE *pl,BYTE *pr);」
void sort_byte_1( // 降順ソート:BYTE
BYTE *pl, // データの左側Ptr
BYTE *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-121)関数「void sort_short_0(
short *pl,short *pr);」
void sort_short_0( // 昇順ソート:short
short *pl, // データの左側Ptr
short *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-122)関数「void sort_short_1(
short *pl,short *pr);」
void sort_short_1( // 降順ソート:short
short *pl, // データの左側Ptr
short *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-123)関数「void sort_long _0(
long *pl,long *pr);」
void sort_long_0( // 昇順ソート:long
long *pl, // データの左側Ptr
long *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-124)関数「void sort_long _1(
long *pl,long *pr);」
void sort_long_1( // 降順ソート:long
long *pl, // データの左側Ptr
long *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-125)関数「void sort_long _0_key(
long *pl,long *pr,short *plx,short *prx);」
void sort_long_0_key( // 昇順KeySort:Key=long,ix=short
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-126)関数「void sort_long _1_key(
long *pl,long *pr,short *plx,short *prx);」
void sort_long_1_key( // 降順KeySort:Key=long,ix=short
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-127)関数「void sort_float_0(
float*pl,float*pr);」
void sort_float_0( // 昇順ソート:float
float *pl, // データの左側Ptr
float *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-128)関数「void sort_float_1(
float*pl,float*pr);」
void sort_float_1( // 降順ソート:float
float *pl, // データの左側Ptr
float *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-129)関数「void sort_float_0_key(
float*pl,float*pr,short *plx,short *prx);」
void sort_float_0_key( // 昇順KeySort:Key=float,ix=short
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-130)関数「void sort_float_1_key(
float*pl,float*pr,short *plx,short *prx);」
void sort_float_1_key( // 降順KeySort:Key=float,ix=short
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-131)関数「void sort_double_0(
double *pl,double *pr);」
void sort_double_0( // 昇順ソート:double
double *pl, // データの左側Ptr
double *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-132)関数「void sort_double_1(
double *pl,double *pr);」
void sort_double_1( // 降順ソート:double
double *pl, // データの左側Ptr
double *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-133)関数「void sort_double_0_key(
double *pl,double *pr,short *plx,short *prx);」
void sort_double_0_key( // 昇順KeySort:Key=double,ix=short
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-134)関数「void sort_double_1_key(
double *pl,double *pr,short *plx,short *prx);」
void sort_double_1_key( // 降順KeySort:Key=double,ix=short
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-135)関数「void sort_int64_0(
__int64* pl,__int64* pr);」
void sort_int64_0( // 昇順ソート:64Bit整数
__int64 *pl, // データの左側Ptr
__int64 *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-136)関数「void sort_int64_1(
__int64* pl,__int64* pr);」
void sort_int64_1( // 降順ソート:64Bit整数
__int64 *pl, // データの左側Ptr
__int64 *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-137)関数「void sort_int64_0_key(
__int64* pl,__int64* pr,short *plx,short *prx);」
void sort_int64_0_key( // 昇順KeySort:Key=64Bit整数,ix=short
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-138)関数「void sort_int64_1_key(
__int64* pl,__int64* pr,short *plx,short *prx);」
void sort_int64_1_key( // 降順KeySort:Key=64Bit整数,ix=short
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
short *plx, // 添字Data左側Ptr
short *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-139)関数「void sortTypeCorr0(
TypeCorr* pl,TypeCorr* pr);」
void sortTypeCorr0( // 昇順ソート:TypeCorr
TypeCorr *pl, // データの左側Ptr
TypeCorr *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-140)関数「void sortTypeCorr1(
TypeCorr* pl,TypeCorr* pr);」
void sortTypeCorr1( // 降順ソート:TypeCorr
TypeCorr *pl, // データの左側Ptr
TypeCorr *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「_1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-141)関数「void sortTypeCorrIX0(
TypeCorrIX* pl,TypeCorrIX*pr);」
void sortTypeCorrIX0( // 昇順ソート:TypeCorrIX
TypeCorrIX *pl, // データの左側Ptr
TypeCorrIX *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「0」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-142)関数「void sortTypeCorrIX1(
TypeCorrIX* pl,TypeCorrIX* pr);」
void sortTypeCorrIX1( // 降順ソート:TypeCorrIX
TypeCorrIX *pl, // データの左側Ptr
TypeCorrIX *pr // データの右側Ptr
);
関数「Sort()」のサブルーチンです!
ここで「1」は、関数「Sort()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-143)関数「void sortXTypeXY0(
TypeXY *pl,TypeXY *pr);」
void sortXTypeXY0( // 昇順ソート:TypeXY:X座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「0」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-144)関数「void sortXTypeXY1(
TypeXY *pl,TypeXY *pr);」
void sortXTypeXY1( // 降順ソート:TypeXY:X座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「1」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-145)関数「void sortYTypeXY0(
TypeXY *pl,TypeXY *pr);」
void sortYTypeXY0( // 昇順ソート:TypeXY:Y座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「0」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-146)関数「void sortYTypeXY1(
TypeXY *pl,TypeXY *pr);」
void sortYTypeXY1( // 降順ソート:TypeXY:Y座標
TypeXY *pl, // データの左側Ptr
TypeXY *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「1」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-147)関数「void sortXTypeXYF0(
TypeXYF* pl,TypeXYF* pr);」
void sortXTypeXYF0( // 昇順ソート:TypeXYF:X座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「0」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-148)関数「void sortXTypeXYF1(
TypeXYF* pl,TypeXYF* pr);」
void sortXTypeXYF1( // 降順ソート:TypeXYF:X座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「1」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-149)関数「void sortYTypeXYF0(
TypeXYF* pl,TypeXYF *pr);」
void sortYTypeXYF0( // 昇順ソート:TypeXYF:Y座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「0」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-150)関数「void sortYTypeXYF1(
TypeXYF* pl,TypeXYF* pr);」
void sortYTypeXYF1( // 降順ソート:TypeXYF:Y座標
TypeXYF *pl, // データの左側Ptr
TypeXYF *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「1」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-151)関数「void sortXTypeXYD0(
TypeXYD* pl,TypeXYD* pr);」
void sortXTypeXYD0( // 昇順ソート:TypeXYD:X座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「0」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-152)関数「void sortXTypeXYD1(
TypeXYD* pl,TypeXYD* pr);」
void sortXTypeXYD1( // 降順ソート:TypeXYD:X座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「1」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-153)関数「void sortYTypeXYD0(
TypeXYD* pl,TypeXYD* pr);」
void sortYTypeXYD0( // 昇順ソート:TypeXYD:Y座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
関数「sortY()」のサブルーチンです!
ここで「0」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-154)関数「void sortYTypeXYD1(
TypeXYD* pl,TypeXYD* pr);」
void sortYTypeXYD1( // 降順ソート:TypeXYD:Y座標
TypeXYD *pl, // データの左側Ptr
TypeXYD *pr // データの右側Ptr
);
関数「sortY()」のサブルーチンです!
ここで「1」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-155)関数「void sortXTypeXYHV0(
TypeXYHV* pl,TypeXYHV* pr);」
void sortXTypeXYHV0( // 昇順ソート:TypeXYHV:X座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「0」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-156)関数「void sortXTypeXYHV1(
TypeXYHV* pl,TypeXYHV*pr);」
void sortXTypeXYHV1( // 降順ソート:TypeXYHV:X座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「1」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-157)関数「void sortYTypeXYHV0(
TypeXYHV* pl,TypeXYHV* pr);」
void sortYTypeXYHV0( // 昇順ソート:TypeXYHV:Y座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「0」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-158)関数「void sortYTypeX HV1(
TypeXYHV* pl,TypeXYHV* pr);」
void sortYTypeXYHV1( // 降順ソート:TypeXYHV:Y座標
TypeXYHV *pl, // データの左側Ptr
TypeXYHV *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「1」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-159)関数「void sortXTypeXYHVIX0(
TypeXYHVIX* pl,TypeXYHVIX* pr);」
void sortXTypeXYHVIX0( // 昇順ソート:TypeXYHVIX:X座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「0」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-160)関数「void
sortXTypeXY HVIX1(
TypeXYHVIX* pl,TypeXYHVIX* pr);」
void sortXTypeXYHVIX1( // 降順ソート:TypeXYHVIX:X座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
関数「SortX()」のサブルーチンです!
ここで「1」は、関数「SortX()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-161)関数「void sortYTypeXYHVIX0(
TypeXYHVIX* pl,TypeXYHVIX* pr);」
void sortYTypeXYHVIX0( // 昇順ソート:TypeXYHVIX:Y座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「0」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-162)関数「void
sortYTypeXY HVIX1(
TypeXYHVIX* pl,TypeXYHVIX* pr);」
void sortYTypeXYHVIX1( // 降順ソート:TypeXYHVIX:Y座標
TypeXYHVIX *pl, // データの左側Ptr
TypeXYHVIX *pr // データの右側Ptr
);
関数「SortY()」のサブルーチンです!
ここで「1」は、関数「SortY()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-163)関数「void sortAreaTypeSf0(
TypeSf* pl,TypeSf* pr);」
void sortAreaTypeSf0( // 昇順ソート:TypeSf:面積
TypeSf *pl, // データの左側Ptr
TypeSf *pr // データの右側Ptr
);
関数「SortArea()」のサブルーチンです!
ここで「0」は、関数「SortArea()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-164)関数「void sortAreaTypeSf1(
TypeSf* pl,TypeSf* pr);」
void sortAreaTypeSf1( // 降順ソート:TypeSf:面積
TypeSf *pl, // データの左側Ptr
TypeSf *pr // データの右側Ptr
);
関数「SortArea()」のサブルーチンです!
ここで「1」は、関数「SortArea()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-165)関数「void sortAreaTypeMB0(
TypeMB* pl,TypeMB* pr);」
void sortAreaTypeMB0( // 昇順ソート:TypeMB:面積
TypeMB *pl, // データの左側Ptr
TypeMB *pr // データの右側Ptr
);
関数「SortArea()」のサブルーチンです!
ここで「0」は、関数「SortArea()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-166)関数「void sortAreaTypeMB1(
TypeMB* pl,TypeMB* pr);」
void sortAreaTypeMB1( // 降順ソート:TypeMB:面積
TypeMB *pl, // データの左側Ptr
TypeMB *pr // データの右側Ptr
);
関数「SortArea()」のサブルーチンです!
ここで「1」は、関数「SortArea()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★注意★「C言語」を良くお使いの人にはお馴染みの
アルゴリズム「再帰呼び出し」として自分自身を再帰定義の
記述方式で呼び出す「クイックソート」を使用して居ます!
再帰定義に馴染みが無い人は専門書で確認して下さい!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-167)関数「void sort_single(
int sw,TypeArray* pa,int l);」
void sort_single( // 配列1個:ソート
int sw, // 0:昇順、1:降順
TypeArray *pa, // 配列情報
int l // 配列のサイズ
);
関数「Sort()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear100.cpp」が
対象】します!
(4-12-168)関数「int eq_sort_byte(
BYTE *p,int l);」
int eq_sort_byte( // MultSort用同一Data数算出:BYTE
BYTE *p, // ポインタ
int l // サイズ
);
関数「eq_sort()」のサブルーチンです!
関数「mult_sort()」のサブルーチンです!
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-169)関数「int eq_sort_short (
short *p,int l);」
int eq_sort_short( // MultSort用同一Data数算出:short
short *p, // ポインタ
int l // サイズ
);
関数「eq_sort()」のサブルーチンです!
関数「mult_sort()」のサブルーチンです!
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-170)関数「int eq_sort_long (
long *p,int l);」
int eq_sort_long( // MultSort用同一Data数算出:long
long *p, // ポインタ
int l // サイズ
);
関数「eq_sort()」のサブルーチンです!
関数「mult_sort()」のサブルーチンです!
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-171)関数「int eq_sort_float(
float* p,int l);」
int eq_sort_float( // MultSort用同一Data数算出:float
float *p, // ポインタ
int l // サイズ
);
関数「eq_sort()」のサブルーチンです!
関数「mult_sort()」のサブルーチンです!
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-172)関数「int eq_sort_double(
double *p,int l);」
int eq_sort_double( // MultSort用同一Data数算出:double
double *p, // ポインタ
int l // サイズ
);
関数「eq_sort()」のサブルーチンです!
関数「mult_sort()」のサブルーチンです!
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-173)関数「int eq_sort(
TypeArray* pa,int offset,int l);」
int eq_sort( // MultSort用同一データ数算出
TypeArray *pa, // 配列情報
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
関数「mult_sort()」のサブルーチンです!
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-174)関数「int mult_sort(
BYTE* ptrsw,TypeArray* pa,
int n,int offset,int l);」
int mult_sort( // マルチSORT
BYTE *ptrsw, // 0:昇順、1:降順
TypeArray *pa, // 配列1~100の情報
int n, // 配列の個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
関数「MultSorting()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-175)関数「int sort_mult_short (
int sw,short *pkey,short **pa,
int n,int offset,int l);」
int sort_mult_short( // short配列群:内部添字=short
int sw, // 0:昇順、1:降順
short *pkey, // 配列情報:キー
short **pa, // 配列情報:従属
int n, // 配列個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
関数「mult_sort_short ()」のサブルーチンです!
関数「MultSortingshort ()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-176)関数「int sort_mult_short_ext(
int sw,short *pkey,short **pa,
int n,int offset,int l);」
int sort_mult_short_ext( // short配列群:内部添字=short
int sw, // 0:昇順、1:降順
short *pkey, // 配列情報:キー
short **pa, // 配列情報:従属
int n, // 配列個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
関数「mult_sort_short ()」のサブルーチンです!
関数「MultSortingshort ()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-177)関数「int mult_sort_short (
BYTE *ptrsw,short **pa,
int n,int offset,int l);」
int mult_sort_short( // マルチソートshort配列群用
BYTE *ptrsw, // 0:昇順、1:降順
short **pa, // 配列1~100の情報
int n, // 配列の個数 1..100
int offset, // 先頭からのOffset
int l // 配列のサイズ
);
関数「MultSortingshort ()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear110.cpp」が
対象】します!
(4-12-178)関数「void sort_byte_0_key_ext(
BYTE *pl,BYTE *pr,int *plx,int *prx);」
void sort_byte_0_key_ext( // 昇順KeySort:Key=BYTE,ix=int
BYTE *pl, // KeyDataの左側Ptr
BYTE *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-179)関数「void sort_byte_1_key_ext(
BYTE *pl,BYTE *pr,int *plx,int *prx);」
void sort_byte_1_key_ext( // 降順KeySort:Key=BYTE,ix=int
BYTE *pl, // KeyDataの左側Ptr
BYTE *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-180)関数「void sort_short_0_key_ext(
short *pl,short *pr,int *plx,int *prx);」
void sort_short_0_key_ext( // 昇順KeySort:Key=short,ix=int
short *pl, // KeyDataの左側Ptr
short *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-181)関数「void sort_short_1_key_ext(
short *pl,short *pr,int *plx,int *prx);」
void sort_short_1_key_ext( // 降順KeySort:Key=short,ix=int
short *pl, // KeyDataの左側Ptr
short *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-182)関数「void
sort_long _0_key_ext(
long *pl,long *pr,int *plx,int *prx);」
void sort_long_0_key_ext( // 昇順KeySort:Key=long,ix=int
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-183)関数「void
sort_long _1_key_ext(
long *pl,long *pr,int *plx,int *prx);」
void sort_long_1_key_ext( // 降順KeySort:Key=long,ix=int
long *pl, // KeyDataの左側Ptr
long *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-184)関数「void sort_float_0_key_ext(
float* pl,float* pr,int *plx,int *prx);」
void sort_float_0_key_ext( // 昇順KeySort:Key=float,ix=int
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-185)関数「void sort_float_1_key_ext(
float* pl,float* pr,int *plx,int *prx);」
void sort_float_1_key_ext( // 降順KeySort:Key=float,ix=int
float *pl, // KeyDataの左側Ptr
float *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-186)関数「void sort_double_0_key_ext(
double *pl,double *pr,int *plx,int *prx);」
void sort_double_0_key_ext( // 昇順KeySort:Key=double,ix=int
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-187)関数「void sort_double_1_key_ext(
double *pl,double *pr,int *plx,int *prx);」
void sort_double_1_key_ext( // 降順KeySort:Key=double,ix=int
double *pl, // KeyDataの左側Ptr
double *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-188)関数「void
sort_int 64_0_key_ext(
__int64* pl,__int64* pr,int *plx,int *prx);」
void sort_int64_0_key_ext( // 昇順KeySort:Key=64Bit整数,ix=int
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_0」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「0:昇順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-189)関数「void sort_int 64_1_key_ext(
__int64* pl,__int64* pr,int *plx,int *prx);」
void sort_int64_1_key_ext( // 降順KeySort:Key=64Bit整数,ix=int
__int64 *pl, // KeyDataの左側Ptr
__int64 *pr, // KeyDataの右側Ptr
int *plx, // 添字Data左側Ptr
int *prx // 添字Data右側Ptr
);
関数「SortIndex()」のサブルーチンです!
ここで「_1」は、関数「SortIndex()」での最初の仮引数「
int sw」で「0:昇順、1:降順」での「1:降順」を意味します
★詳細★は、後で説明:【ファイル「CopyClear120.cpp」が
対象】します!
(4-12-190)関数「void make_134_pattern_8(
TypeArray* pd,int init_data,int init_inc);」
void make_134_pattern_8( //
TypeArray *pd, // D配列
int init_data, // 初期値データ
int init_inc ); // 初期値増加値
関数「make_134_pattern()」のサブルーチンです!
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-191)関数「void make_134_pattern_16(
TypeArray* pd,int init_data,int init_inc);」
void make_134_pattern_16( //
TypeArray *pd, // D配列
int init_data, // 初期値データ
int init_inc ); // 初期値増加値
関数「make_134_pattern()」のサブルーチンです!
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-192)関数「void make_134_pattern_32(
TypeArray* pd,int init_data,int init_inc);」
void make_134_pattern_32( //
TypeArray *pd, // D配列
int init_data, // 初期値データ
int init_inc ); // 初期値増加値
関数「make_134_pattern()」のサブルーチンです!
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-193)関数「int make_134_pattern(
TypeArray* pd,int data,int inc);」
int make_134_pattern( //
TypeArray *pd, // D配列
int data, // データ
int inc ); // 増加値
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-194)関数「int make2pattern(
TypeArray* pd,int data);」
int make2pattern( //
TypeArray *pd, // D配列
int data ); // 初期値データ
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-195)関数「void make_56_pattern(
TypeArray* pd,
int x,int y,int h,int v,int d);」
void make_56_pattern( //
TypeArray *pd, // D配列
int x, // x座標始点
int y, // y座標始点
int h, // 水平幅
int v, // 垂直幅
int d ); // 書き込みデータ
関数「make_5_pattern()」のサブルーチンです!
関数「make_6_pattern()」のサブルーチンです!
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-196)関数「int make5pattern(
TypeArray* pd,int color);」
int make5pattern( //
TypeArray *pd, // D配列
int color ); // 色の選択子
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-197)関数「int make6pattern(
TypeArray* pd,int color);」
int make6pattern( //
TypeArray *pd, // D配列
int color ); // 色の選択子
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear200.cpp」が
対象】します!
(4-12-198)関数「void magnifyX1(
int zh,BYTE *ps,BYTE *pd,int sh,int dh);」
void magnifyX1( //
int zh, // 水平拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh ); // D配列水平幅
関数「MagnifyZoomint()」のサブルーチンです!
関数「magnifyX()」のサブルーチンです!
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-199)関数「void magnifyX2(
int zh,BYTE *ps,BYTE *pd,int sh,int dh,int dl);」
void magnifyX2( //
int zh, // 水平拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
関数「MagnifyZoomint()」のサブルーチンです!
関数「magnifyX()」のサブルーチンです!
関数「MakePattern()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-200)関数「void magnifyX3(
int zh,BYTE *ps,BYTE *pd,int sh,int dh,int dl);」
void magnifyX3( //
int zh, // 水平拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
関数「MagnifyZoomint()」のサブルーチンです!
関数「magnifyX()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-201)関数「void magnifyXX(
int zh,int zv,BYTE *ps,BYTE *pd,
int sh,int dh,int dl);」
void magnifyXX( //
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 4..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
関数「MagnifyZoomint()」のサブルーチンです!
関数「magnifyX()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-202)関数「void magnifyX(
int zh,int zv,BYTE *ps,BYTE *pd,
int sh,int dh,int dl);」
void magnifyX( //
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
関数「MagnifyZoomint()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-203)関数「void magnifyXExt(
BYTE *buf,int zh,int zv,
BYTE *ps,BYTE *pd,int sh,int dh,
int dl,int dataSize);」
void magnifyXExt( // X方向拡大:拡張版
BYTE *buf, // 作業用バッファー
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl, // 増加幅:D
int dataSize ); // 画素サイズ(1,2,3...)
関数「MagnifyZoomint()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-204)関数「void magnifyXExtColor(
BYTE *buf,int zh,int zv,
BYTE *ps,BYTE *pd,int sh,int dh,int dl);」
void magnifyXExtColor( // X方向拡大:カラー拡張版
BYTE *buf, // 作業用バッファー
int zh, // 水平拡大率 1..10
int zv, // 垂直拡大率 1..10
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int sh, // S配列水平幅
int dh, // D配列水平幅
int dl ); // 増加幅:D
関数「MagnifyZoomint()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-205)関数「void makeMagnifyFX(
short *ptbl,double zh,int h,int dataSize);」
void makeMagnifyFX( // 拡大/縮小X座標テーブル作成
short *ptbl, // x座標TablePtr
double zh, // 水平拡大率
int h, // 水平幅
int dataSize ); // 画素サイズ(1,2,3...)
関数「MagnifyZoom()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-206)関数「void magnifyFX8(
short *ptbl,BYTE *ps,BYTE *pd,int h);」
void magnifyFX8( // 拡大/縮小:8bit
short *ptbl, // x座標TablePtr
BYTE *ps, // S配列実Ptr
BYTE *pd, // D配列実Ptr
int h ); // 水平幅
関数「MagnifyZoom()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
ここで「8」は、画素単位が8ビット、1バイト画素を意味
します!
(4-12-207)関数「void magnifyFX16(
short *ptbl,short *ps,short *pd,int h);」
void magnifyFX16( // 拡大/縮小:16bit
short *ptbl, // x座標TablePtr
short *ps, // S配列実Ptr
short *pd, // D配列実Ptr
int h ); // 水平幅
関数「MagnifyZoom()」のサブルーチンです!
ここで「16」は、画素単位が16ビット、2バイト画素を
意味します!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-208)関数「void magnifyFX32(
short *ptbl,long *ps,long *pd,int h);」
void magnifyFX32( // 拡大/縮小:32bit
short *ptbl, // x座標TablePtr
long *ps, // S配列実Ptr
long *pd, // D配列実Ptr
int h ); // 水平幅
関数「MagnifyZoom()」のサブルーチンです!
ここで「32」は、画素単位が32ビット、4バイト画素を
意味します!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-209)関数「void makeMagnifyInterpolate(
short tbl[],floattblR[],double z,
int len,int lenOrg,double offset,int dataSize);」
void makeMagnifyInterpolate( // 拡大/縮小X座標テーブル作成
short tbl[], // 座標TablePtr
float tblR[], // 座標存在率TablePtr
double z, // 拡大縮小率
int len, // テーブル長
int lenOrg, // 拡大縮小前の長さ
double offset, // 微少座標オフセット
int dataSize ); // 画素サイズ(1,2,3...)
関数「MagnifyZoomInterpolateByte()」のサブルーチン
です!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-210)関数「int makeMagnifyInterpolate(
short tbl[],int tblR[],double z,
int len,int lenOrg,double offset,int dataSize);」
int makeMagnifyInterpolate( // 拡大/縮小X座標テーブル作成
short tbl[], // 座標TablePtr
int tblR[], // 座標存在率×2048TablePtr
double z, // 拡大縮小率
int len, // テーブル長
int lenOrg, // 拡大縮小前の長さ
double offset, // 微少座標オフセット
int dataSize ); // 画素サイズ(1,2,3...)
関数「MagnifyZoomInterpolateBYTE ()」のサブルーチン
です!
★備考★引数の型が異なるオーバーロード(多重定義)関数
が存在します!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-211)関数「void
magnifyZoomInterpolateBYTE (
TypeArray* ps,TypeArray* pd,int h,int v,
int zhOffset,int zvOffset,
short tblX[],short tblY[],int tblRX[],int tblRY[],
int dataSize);」
void magnifyZoomInterpolateByte( // 拡大・縮小:補間:BYTE
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
int tblRX[], // X座標存在率×2048TablePtr
int tblRY[], // Y座標存在率×2048TablePtr
int dataSize ); // 画素サイズ
関数「MagnifyZoomInterpolateBYTE ()」のサブルーチン
です!
関数「MagnifyZoomInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-212)関数「void
magnifyZoomInterpolateshort (
TypeArray* ps,TypeArray* pd,int h,int v,
int zhOffset,int zvOffset,
short tblX[],short tblY[],
float tblRX[],float tblRY[],
int dataSize);」
void magnifyZoomInterpolateShort( // 拡大・縮小:補間:Short
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
float tblRX[], // X座標存在率TablePtr
float tblRY[], // Y座標存在率TablePtr
int dataSize ); // 画素サイズ
関数「MagnifyZoomInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-213)関数「void
magnifyZoomInterpolatelong (
TypeArray* ps,TypeArray* pd,int h,int v,
int zhOffset,int zvOffset,
short tblX[],short tblY[],
float tblRX[],float tblRY[],
int dataSize);」
void magnifyZoomInterpolateLong( // 拡大・縮小:補間:Long
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
float tblRX[], // X座標存在率TablePtr
float tblRY[], // Y座標存在率TablePtr
int dataSize ); // 画素サイズ
関数「MagnifyZoomInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-214)関数「void
magnifyZoomInterpolateFloat(
TypeArray* ps,TypeArray* pd,int h,int v,
int zhOffset,int zvOffset,
short tblX[],short tblY[],
float tblRX[],float tblRY[],
int dataSize);」
void magnifyZoomInterpolateFloat( // 拡大・縮小:補間:単精度
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int h, // 水平幅
int v, // 垂直幅
int zhOffset, // 拡大縮尺時オフセット水平方向
int zvOffset, // 拡大縮尺時オフセット垂直方向
short tblX[], // X座標TablePtr
short tblY[], // Y座標TablePtr
float tblRX[], // X座標存在率TablePtr
float tblRY[], // Y座標存在率TablePtr
int dataSize ); // 画素サイズ
関数「MagnifyZoomInterpolate()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-215)関数「void magnifyAverageX(
TypeArray* ps,TypeArray* pd,int zh,int sw);」
void magnifyAverageX( // 縮小:平均化:水平方向縮小
TypeArray *ps, // S配列
TypeArray *pd, // D配列
int zh, // 水平縮小率 1,2,3,4
int sw ); // sw=偽→平均、真→合計
関数「MagnifyAverage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!
(4-12-216)関数「void mirrorbyte_1(
BYTE *ps,BYTE *pd,int h,int v,int sl,int dl);」
void mirrorByte_1( // 鏡像BYTE:左右
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorBYTE ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-217)関数「void mirrorbyte_2(
BYTE *ps,BYTE *pd,int h,int v,int sl,int dl);」
void mirrorByte_2( // 鏡像BYTE:上下
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorBYTE ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_2」は、鏡像種類の2番目=上下反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-218)関数「void mirrorBYTEColor_1(
BYTE *ps,BYTE *pd,int h,int v,int sl,int dl);」
void mirrorByteColor_1( // 鏡像BYTE:左右
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorBYTE ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-219)関数「void
mirrorBYTEExt_1(
BYTE *ps,BYTE *pd,int h,int v,int sl,int dl,int dataSize);」
void mirrorByteExt_1( // 鏡像BYTE:左右
BYTE *ps, // S配列実Adr
BYTE *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int dataSize ); // 画素サイズ
関数「mirrorBYTE ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-220)関数「void mirrorBYTE (
BYTE *ps,BYTE *pd,int h,int v,
int sl,int dl,int k,int dataSize);」
void mirrorByte( // 鏡像BYTE単位
BYTE *ps, // S配列の実Adr
BYTE *pd, // D配列の実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int k, // 1:左右反転
// 2:上下反転
// 3:上下左右反転
int dataSize ); // 画素サイズ
関数「MirrorImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-221)関数「void mirrorShort_1(
short *ps,short *pd,int h,int v,int sl,int dl);」
void mirrorShort_1( // 鏡像:Short左右
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorShort ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-221)関数「void mirrorShort_2(
short *ps,short *pd,int h,int v,int sl,int dl);」
void mirrorShort_2( // 鏡像:Short上下
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorShort ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_2」は、鏡像種類の2番目=上下反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-222)関数「void
mirrorShort Color_1(
short *ps,short *pd,int h,int v,int sl,int dl);」
void mirrorShortColor_1( // 鏡像:Short左右
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorShort ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-223)関数「void
mirrorShort Ext_1(
short *ps,short *pd,int h,int v,int sl,int dl,
int dataSize);」
void mirrorShortExt_1( // 鏡像:Short左右
short *ps, // S配列実Adr
short *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int dataSize ); // 画素サイズ
関数「mirrorShort ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-224)関数「void mirrorShort (
short *ps,short *pd,int h,int v,int sl,int dl,
int k,int dataSize);」
void mirrorShort( // 鏡像:Short単位
short *ps, // S配列の実Adr
short *pd, // D配列の実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int k, // 1:左右反転
// 2:上下反転
// 3:上下左右反転
int dataSize ); // 画素サイズ
関数「MirrorImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-225)関数「void mirrorLong _1(
long *ps,long *pd,int h,int v,int sl,int dl);」
void mirrorLong_1( // 鏡像:Long左右
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorLong ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-226)関数「void mirrorLong_2(
long *ps,long *pd,int h,int v,int sl,int dl);」
void mirrorLong_2( // 鏡像:Long上下
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorLong ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_2」は、鏡像種類の2番目=上下反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-227)関数「void
mirrorlong Color_1(
long *ps,long *pd,int h,int v,int sl,int dl);」
void mirrorLongColor_1( // 鏡像:Long左右
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl ); // Dの増加幅
関数「mirrorLong ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
「_1」は、鏡像種類の1番目=左右反転です!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-228)関数「void
mirrorlong Ext_1(
long *ps,long *pd,int h,int v,int sl,int dl,
int dataSize);」
void mirrorLongExt_1( // 鏡像:Long左右
long *ps, // S配列実Adr
long *pd, // D配列実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int dataSize ); // 画素サイズ
関数「mirrorlong ()」のサブルーチンです!
関数「MirrorImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
(4-12-229)関数「void mirrorLong (
long *ps,long *pd,int h,int v,int sl,int dl,int k,
int dataSize);」
void mirrorLong( // 鏡像:Long単位
long *ps, // S配列の実Adr
long *pd, // D配列の実Adr
int h, // 水平幅
int v, // 垂直幅
int sl, // Sの増加幅
int dl, // Dの増加幅
int k, // 1:左右反転
// 2:上下反転
// 3:上下左右反転
int dataSize ); // 画素サイズ
関数「MirrorImage()」のサブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear310.cpp」が
対象】します!
★備考★
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「 」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい
ここで一旦、切れが良い「mirror×××」と鏡像サブルーチ
ン関数終了なので3月6日分迄の講義とします!
何故、変な所で打ち切るかは、続きの
解説クラスCopyClear(9ダッシュ)を見て
下さい!引き続き御贔屓して受講して下さい!