見出し画像

解説クラスCopyClear(7)

解説クラスCopyClear(7)


2024年3月3初講(初稿)

この講義は解説『解説クラスCopyClear(6)』
続きです!

(4-11)元private属性としたサブルーチン的な関数群

public:                                         // TypeArrayと実配列とのデータ交換

    BYTE*   MoveArrayByte(                          // 配列→バッファー:BYTE
                TypeArray   *p,                     // 配列
                BYTE        buf[],                  // バッファー
                int         size                    // サイズ
            );
    short*  MoveArrayShort(                         // 配列→バッファー:short
                TypeArray   *p,                     // 配列
                short       buf[],                  // バッファー
                int         size                    // サイズ
            );
    long*   MoveArrayLong(                          // 配列→バッファー:long
                TypeArray   *p,                     // 配列
                long        buf[],                  // バッファー
                int         size                    // サイズ
            );
    int*    MoveArrayInt(                           // 配列→バッファー:int
                TypeArray   *p,                     // 配列
                int         buf[],                  // バッファー
                int         size                    // サイズ
            );
    float*  MoveArrayFloat(                         // 配列→バッファー:float
                TypeArray   *p,                     // 配列
                float       buf[],                  // バッファー
                int         size                    // サイズ
            );
    double* MoveArrayDouble(                        // 配列→バッファー:double
                TypeArray   *p,                     // 配列
                double      buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveCopyArrayByte(                      // 配列→buf:BYTE:完全
                TypeArray   *p,                     // 配列
                BYTE        buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveCopyArrayShort(                     // 配列→buf:short:完全
                TypeArray   *p,                     // 配列
                short       buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveCopyArrayLong(                      // 配列→buf:long:完全
                TypeArray   *p,                     // 配列
                long        buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveCopyArrayInt(                       // 配列→buf:int:完全
                TypeArray   *p,                     // 配列
                int         buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveCopyArrayFloat(                     // 配列→buf:float:完全
                TypeArray   *p,                     // 配列
                float       buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveCopyArrayDouble(                    // 配列→buf:double:完全
                TypeArray   *p,                     // 配列
                double      buf[],                  // バッファー
                int         size                    // サイズ
            );
    int     MoveByteArray(                          // Buf→配列:BYTE
                BYTE        buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );
    int     MoveShortArray(                         // Buf→配列:short
                short       buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );
    int     MoveLongArray(                          // Buf→配列:long
                long        buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );
    int     MoveIntArray(                           // Buf→配列:int
                int         buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );
    int     MoveFloatArray(                         // Buf→配列:float
                float       buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );
    int     MoveDoubleArray(                        // Buf→配列:double
                double      buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );


public:                                             // 各種内部処理
    int     ClearRoundImageBase(                    // 周囲クリア:基本
                TypeArray   *pa,                    // 配列
                int         data,                   // データ:整数
                int         n1,                     // 水平線クリア回数
                int         n2                      // 垂直線クリア回数
            );
    int     ClearRoundImageBase(                    // 周囲クリア:基本
                TypeArray   *pa,                    // 配列
                double      data,                   // データ:実数
                int         n1,                     // 水平線クリア回数
                int         n2                      // 垂直線クリア回数
            );
    int     ClearRoundImage(                        // 周囲クリア
                TypeArray   *pa,                    // 配列
                int         data,                   // データ:整数
                int         n                       // クリア周回回数
            );
    int     ClearRoundImage(                        // 周囲クリア
                TypeArray   *pa,                    // 配列
                double      data,                   // データ:実数
                int         n                       // クリア周回回数
            );
    int     CopyRoundImage(                         // 周囲転送
                TypeArray   *ps,                    // S配列
                TypeArray   *pd,                    // D配列
                int         n                       // コピー周回回数
            );
    int     CopyRoundImageBase(                     // 周囲転送:基本
                TypeArray   *ps,                    // S配列
                TypeArray   *pd,                    // D配列
                int         n1,                     // 水平線コピー回数
                int         n2                      // 垂直線コピー回数
            );
public:             // 拡大・縮小
    int             MagnifyZoom(                    // 拡大・縮小
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        double      zh,                             // 水平拡大率
        double      zv,                             // 垂直拡大率
        int         dataSize=1 );                   // 画素サイズ(省略時=1)
    int             MagnifyZoomInt(                 // 整数倍拡大
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        int         zh,                             // 水平拡大率
        int         zv,                             // 垂直拡大率
        int         dataSize=1 );                   // 画素サイズ(省略時=1)
    int             MagnifyZoomInterpolate(         // 拡大・縮小:補間
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        double      zh,                             // 水平拡大率
        double      zv,                             // 垂直拡大率
        double      offsetX=0.0,                    // 微少X座標オフセット
        double      offsetY=0.0,                    // 微少Y座標オフセット
        int         dataSize=1 );                   // 画素サイズ(省略時=1)
    int             MagnifyZoomInterpolateByte(     // 拡大・縮小:補間:BYTE専用
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        double      zh,                             // 水平拡大率
        double      zv,                             // 垂直拡大率
        double      offsetX=0.0,                    // 微少X座標オフセット
        double      offsetY=0.0,                    // 微少Y座標オフセット
        int         dataSize=1 );                   // 画素サイズ(省略時=1)
    int             MagnifyAverage(                 // 縮小:平均化
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        int         zh,                             // 水平縮小率 1,2,3,4...16
        int         zv,                             // 垂直縮小率 1,2,3,4...16
        int         sw=FALSE );                     // sw=偽(省略時:平均)、真→合計
public:             // 平行移動
    int             MoveImageByte(                  // 平行移動:補間:BYTE
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ
    int             MoveImageShort(                 // 平行移動:補間:short
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ
    int             MoveImageLong(                  // 平行移動:補間:long
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ
    int             MoveImageFloat(                 // 平行移動:補間:単精度
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ
public:
    int     SetMathematics(                         // 数学的設定
                int     sw                          // 0:degree/1:radian
            );

今回、紹介する関数です!

(4-11-1)関数「BYTE* MoveArrayBYTE (
TypeArray *p,BYTE buf[],int size);」

    BYTE*   MoveArrayByte(                          // 配列→バッファー:BYTE
                TypeArray   *p,                     // 配列
                BYTE        buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Array」は、「TypeArray型」を意味し!
「BYTE 」は、「BYTE型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「BYTE buf[],int size」の「BYTE型」のデータ配列
とサイズを示したC言語で扱い易い形に移動する為の関数で
す!
関数の返値は、「BYTE 」型で仮引数「TypeArray *p,」で
示すデータ配列が1バイト単位ならば、コピーする時間を
節約する為、仮引数「TypeArray* p,」のデータ配列を示す
ポインタの値を返しますが、「TypeArray* p,」が2バイト
以上のサイズならば、仮引数「BYTE buf[]」に型変換して
コピーし、仮引数「BYTE buf[]」のアドレスをポインタと
して返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-2)関数「short* MoveArrayshort (
TypeArray *p,short buf[],int size);」

    short*  MoveArrayShort(                         // 配列→バッファー:short
                TypeArray   *p,                     // 配列
                short       buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Array」は、「TypeArray型」を意味し!
「short 」は、「short型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「short buf[],int size」の「short型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、「short 」型で仮引数「TypeArray *p,」で
示すデータ配列が2バイト単位ならば、コピーする時間を
節約する為、仮引数「TypeArray* p,」のデータ配列を
示すポインタの値を返しますが、「TypeArray* p,」が
2バイト以外のサイズならば、仮引数「short buf[]」に
型変換してコピーし、仮引数「short buf[]」のアドレスを
ポインタとして返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-3)関数「long* MoveArrayLong (
TypeArray *p,long buf[],int size);」

    long*   MoveArrayLong(                          // 配列→バッファー:long
                TypeArray   *p,                     // 配列
                long        buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Array」は、「TypeArray型」を意味し!
「long 」は、「long型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「long buf[],int size」の「long型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、「long 」型で仮引数「TypeArray *p,」で
示すデータ配列が4バイト単位ならば、コピーする時間を
節約する為、仮引数「TypeArray* p,」のデータ配列を示す
ポインタの値を返しますが、「TypeArray* p,」が4バイト
以外のサイズならば、仮引数「long buf[]」に型変換して
コピーし、仮引数「long buf[]」のアドレスをポインタと
して返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-4)関数「int MoveArrayInt((
TypeArray *p,int buf[],int size);」

    int*    MoveArrayInt(                           // 配列→バッファー:int
                TypeArray   *p,                     // 配列
                int         buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Array」は、「TypeArray型」を意味し!
「int 」は、「int型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「int buf[],int size」の「int型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、「int 」型で仮引数「TypeArray *p,」で
示すデータ配列が4バイト単位ならば、コピーする時間を
節約する為、仮引数「TypeArray* p,」のデータ配列を示す
ポインタの値を返しますが、「TypeArray* p,」が2バイト
以外のサイズならば、仮引数「int buf[]」に型変換して
コピーし、仮引数「int buf[]」のアドレスをポインタと
して返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-5)関数「float* MoveArrayFloat(
TypeArray *p,float buf[],int size);」

    float*  MoveArrayFloat(                         // 配列→バッファー:float
                TypeArray   *p,                     // 配列
                float       buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Array」は、「TypeArray型」を意味し!
「Float」は、「float型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「float buf[],int size」の「float型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、「float*」型で仮引数「TypeArray* p,」で
示すデータ配列が単精度実数型を示す型ならば、コピーする
時間を節約する為、仮引数「TypeArray* p,」の
データ配列を示すポインタの値を返しますが、
「TypeArray* p,」が単精度実数型を示す型以外のサイズ
ならば、仮引数「float buf[]」に型変換してコピーし、
仮引数「float buf[]」のアドレスをポインタと
して返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-6)関数「double MoveArraydouble (TypeArray p,double buf[],int size);」

    double* MoveArrayDouble(                        // 配列→バッファー:double
                TypeArray   *p,                     // 配列
                double      buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Array」は、「TypeArray型」を意味し!
「double 」は、「double 型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「double buf[],int size」の「double 型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、「double 」型で仮引数「TypeArray *p,」で
示すデータ配列が倍精度実数型を示す型ならば、コピーする
時間を節約する為、仮引数「TypeArray* p,」の
データ配列を示すポインタの値を返しますが、
「TypeArray* p,」が倍精度実数型を示す型以外のサイズ
ならば、仮引数「double buf[]」に型変換してコピーし、
仮引数「double buf[]」のアドレスをポインタと
して返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-7)関数「int MoveCopyArrayByte (
TypeArray* p,BYTE buf[],int size);」

    int     MoveCopyArrayByte(                      // 配列→buf:BYTE:完全
                TypeArray   *p,                     // 配列
                BYTE        buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Copy」は、コピーするを意味し!ココでワザワザ
「MoveCopy」と表現したのは、少し前で紹介した
関数「MoveArrayBYTE ()」では、コピーする時間を
省略する為に工夫≪中身をコピーする替わりにポインタの値
を関数辺値とし返した≫していましたが、この関数は同じ型
で有っても実際にコピーします!
「Array」は、「TypeArray型」を意味し!
「Byte 」は、「BYTE型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「BYTE buf[],int size」の「BYTE型」のデータ配列
とサイズを示したC言語で扱い易い形に移動する為の関数で
す!
関数の返値は、実際にコピー動作したサイズを整数値で
返します!但し、仮引数「TypeArray* p,」で示した
画像情報が不適合ならばエラーコード「STI_ARY_0」を
返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-8)関数「int MoveCopyArrayShort (
TypeArray* p,short buf[],int size);」

    int     MoveCopyArrayShort(                     // 配列→buf:short:完全
                TypeArray   *p,                     // 配列
                short       buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Copy」は、コピーするを意味し!ココでワザワザ
「MoveCopy」と表現したのは、少し前で紹介した
関数「MoveArrayshort ()」では、コピーする時間を
省略する為に工夫していましたが、この関数は同じ型で
有ってもコピーします!
「Array」は、「TypeArray型」を意味し!
「Short 」は、「short型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「short buf[],int size」の「short型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、実際にコピー動作したサイズを整数値で
返します!但し、仮引数「TypeArray* p,」で示した
画像情報が不適合ならばエラーコード「STI_ARY_0」を
返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-9)関数「int MoveCopyArrayLong (
TypeArray* p,long buf[],int size);」

    int     MoveCopyArrayLong(                      // 配列→buf:long:完全
                TypeArray   *p,                     // 配列
                long        buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Copy」は、コピーするを意味し!ココでワザワザ
「MoveCopy」と表現したのは、少し前で紹介した
関数「MoveArrayshort ()」では、コピーする時間を
省略する為に工夫していましたが、この関数は同じ型で
有ってもコピーします!
「Array」は、「TypeArray型」を意味し!
「long 」は、「long型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「long buf[],int size」の「long型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、実際にコピー動作したサイズを整数値で
返します!但し、仮引数「TypeArray* p,」で示した
画像情報が不適合ならばエラーコード「STI_ARY_0」を
返します!

(4-11-10)関数「int MoveCopyArrayInt (
TypeArray* p,int buf[],int size);」

    int     MoveCopyArrayInt(                       // 配列→buf:int:完全
                TypeArray   *p,                     // 配列
                int         buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Copy」は、コピーするを意味し!ココでワザワザ
「MoveCopy」と表現したのは、少し前で紹介した
関数「MoveArrayshort ()」では、コピーする時間を
省略する為に工夫していましたが、この関数は同じ型で
有ってもコピーします!
「Array」は、「TypeArray型」を意味し!
「int 」は、「int型」のデータ配列を意味します!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「int buf[],int size」の「int型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、実際にコピー動作したサイズを整数値で
返します!但し、仮引数「TypeArray* p,」で示した
画像情報が不適合ならばエラーコード「STI_ARY_0」を
返します!

(4-11-11)関数「int MoveCopyArrayFloat(
TypeArray* p,float buf[],int size);」

    int     MoveCopyArrayFloat(                     // 配列→buf:float:完全
                TypeArray   *p,                     // 配列
                float       buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Copy」は、コピーするを意味し!ココでワザワザ
「MoveCopy」と表現したのは、少し前で紹介した
関数「MoveArrayshort ()」では、コピーする時間を
省略する為に工夫していましたが、この関数は同じ型で
有ってもコピーします!
「Array」は、「TypeArray型」を意味し!
「Float」は、「float型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「float buf[],floatsize」の「float型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、実際にコピー動作したサイズを整数値で
返します!但し、仮引数「TypeArray* p,」で示した
画像情報が不適合ならばエラーコード「STI_ARY_0」を
返します!

(4-11-12)関数「int MoveCopyArrayDouble (
TypeArray* p,double buf[],int size);」

    int     MoveCopyArrayDouble(                    // 配列→buf:double:完全
                TypeArray   *p,                     // 配列
                double      buf[],                  // バッファー
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Copy」は、コピーするを意味し!ココでワザワザ
「MoveCopy」と表現したのは、少し前で紹介した
関数「MoveArrayshort ()」では、コピーする時間を
省略する為に工夫していましたが、この関数は同じ型で
有ってもコピーします!
「Array」は、「TypeArray型」を意味し!
「Double 」は、「double 型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
仮引数「TypeArray* p,」の形で格納されたデータを
仮引数「double buf[],double size」の「double 型」の
データ配列とサイズを示したC言語で扱い易い形に移動する
為の関数です!
関数の返値は、実際にコピー動作したサイズを整数値で
返します!但し、仮引数「TypeArray* p,」で示した
画像情報が不適合ならばエラーコード「STI_ARY_0」を
返します!

(4-11-13)関数「int MoveByteArray(
BYTE buf[],TypeArray* p,int size);」

    int     MoveByteArray(                          // Buf→配列:BYTE
                BYTE        buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Byte 」は、「BYTE型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
「Array」は、「TypeArray型」を意味し!
仮引数「BYTE buf[],int size」の「BYTE型」のデータ配列
とサイズを示したC言語で扱い易い形の中身のデータを
仮引数「TypeArray* p,」の形で格納(中身をコピー)する
事を行う関数です!
関数の返値は、正常に動作完了は「END_STI」を返し、
仮引数「TypeArray* p,」が適合シナカッタ場合は、
エラーコードを返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-14)関数「int MoveShort Array(
short buf[],TypeArray* p,int size);」

    int     MoveShortArray(                         // Buf→配列:short
                short       buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Short 」は、「short型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
「Array」は、「TypeArray型」を意味し!
仮引数「short buf[],int size」の「short型」の
データ配列とサイズを示したC言語で扱い易い形の中身の
データを仮引数「TypeArray* p,」の形で格納(中身を
コピー)する事を行う関数です!
関数の返値は、正常に動作完了は「END_STI」を返し、
仮引数「TypeArray* p,」が適合シナカッタ場合は、
エラーコードを返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-15)関数「int MovelongArray(
long buf[],TypeArray* p,int size);」

    int     MoveLongArray(                          // Buf→配列:long
                long        buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「long 」は、「long型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
「Array」は、「TypeArray型」を意味し!
仮引数「long buf[],int size」の「long型」のデータ配列
とサイズを示したC言語で扱い易い形の中身のデータを
仮引数「TypeArray* p,」の形で格納(中身をコピー)する
事を行う関数です!
関数の返値は、正常に動作完了は「END_STI」を返し、
仮引数「TypeArray* p,」が適合シナカッタ場合は、
エラーコードを返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-16)関数「int MoveIntArray(
int buf[],TypeArray* p,int size);」

    int     MoveIntArray(                           // Buf→配列:int
                int         buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「int 」は、「int型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
「Array」は、「TypeArray型」を意味し!
仮引数「int buf[],int size」の「int型」のデータ配列
とサイズを示したC言語で扱い易い形の中身のデータを
仮引数「TypeArray* p,」の形で格納(中身をコピー)する
事を行う関数です!
関数の返値は、正常に動作完了は「END_STI」を返し、
仮引数「TypeArray* p,」が適合シナカッタ場合は、
エラーコードを返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-17)関数「int MoveFloatArray(
float buf[],TypeArray* p,int size);」

    int     MoveFloatArray(                         // Buf→配列:float
                float       buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Float」は、「float型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
「Array」は、「TypeArray型」を意味し!
仮引数「float buf[],float size」の「float型」の
データ配列とサイズを示したC言語で扱い易い形の中身の
データを仮引数「TypeArray* p,」の形で格納(中身を
コピー)する事を行う関数です!
関数の返値は、正常に動作完了は「END_STI」を返し、
仮引数「TypeArray* p,」が適合シナカッタ場合は、
エラーコードを返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-18)関数「int MoveDoubleArray(
double buf[],TypeArray* p,int size);」

    int     MoveDoubleArray(                        // Buf→配列:double
                double      buf[],                  // バッファー
                TypeArray   *p,                     // 配列
                int         size                    // サイズ
            );

「Move」は、移動するを意味し!
「Double 」は、「double 型」のデータ配列を意味します!
英単語先頭大文字続く部分を小文字で切れ目表現に注意!
「Array」は、「TypeArray型」を意味し!
仮引数「double buf[],double size」の「double 型」の
データ配列とサイズを示したC言語で扱い易い形の中身の
データを仮引数「TypeArray* p,」の形で格納(中身を
コピー)する事を行う関数です!
関数の返値は、正常に動作完了は「END_STI」を返し、
仮引数「TypeArray* p,」が適合シナカッタ場合は、
エラーコードを返します!
★詳細★は、後で説明:【ファイル「CopyClear000.cpp」が
対象】します!

(4-11-19)関数「int ClearRoundImageBase(
TypeArray* pa,int data,int n1,int n2);」

    int     ClearRoundImageBase(                    // 周囲クリア:基本
                TypeArray   *pa,                    // 配列
                int         data,                   // データ:整数
                int         n1,                     // 水平線クリア回数
                int         n2                      // 垂直線クリア回数
            );

「Clear」は、英単語「Clear」でカタカナ語でもクリアー
として「きれいに成る・片付ける」、
この画像処理ライブラリでは、「同じデータを画像メモリ
の画素に書き込んで同じ値にする事で一番多い例では
【0を書き込む】事で【0クリア】を行う」を意味します!
「Round」は、英単語「Round」、日本語としては
「一回り・一巡」、周囲一回りを意味します!
「Image」は、勿論、画像を意味し!
「Base」は、基本を意味し!
仮引数「int data」で整数型の数値を書き込む(クリアする
)値として指定します!
この画像処理ライブラリでは、「周囲=画像メモリの
外枠的な最外周」をクリアする基本関数を意味します!
仮引数「int n1,int n2」と水平線のクリア本数と垂直線の
クリア本数と縦横別に指定出来る事も特徴!
★備考★何故、この画像の周囲をクリアする処理が必要かは
クラス【class Filter:public Calculate{}】の解説を行う
ところで説明します!
★注意★同じ型名でオーバーロード(多重定義)関数として
仮引数「double data」で浮動小数点数型を示す型の数値を
書き込む(クリアする)値として指定する関数も存在!
★詳細★は、後で説明:【ファイル「CopyClear010.cpp」が
対象】します!
注意★解説『解説クラスFilter(1)』等で

(4-11-20)関数「int ClearRoundImageBase(
TypeArray* pa,double data,int n1,int n2);」

    int     ClearRoundImageBase(                    // 周囲クリア:基本
                TypeArray   *pa,                    // 配列
                double      data,                   // データ:実数
                int         n1,                     // 水平線クリア回数
                int         n2                      // 垂直線クリア回数
            );

「Clear」は、英単語「Clear」でカタカナ語でもクリアー
として「きれいに成る・片付ける」、
この画像処理ライブラリでは、「同じデータを画像メモリの
画素に書き込んで同じ値にする事で一番多い例では
【0を書き込む】事で【0クリア】を行う」を意味します!
「Round」は、英単語「Round」、日本語としては
「一回り・一巡」、周囲一回りを意味します!
「Image」は、勿論、画像を意味し!
「Base」は、基本を意味し!
仮引数「double data」で倍精度浮動小数点数型の数値を
書き込む(クリアする)値として指定します!
この画像処理ライブラリでは、「周囲=画像メモリの外枠的
な最外周」をクリアする基本関数を意味します!
仮引数「int n1,int n2」と水平線のクリア本数と垂直線の
クリア本数と縦横別に指定出来る事も特徴!
★備考★何故、この画像の周囲をクリアする処理が必要かは
クラス【class Filter:public Calculate{}】の解説を行う
ところで説明します!
★注意★同じ型名でオーバーロード(多重定義)関数として
仮引数「int data」で整数型を示す型の数値を書き込む(
クリアする)値として指定する関数も存在!
★詳細★は、後で説明:【ファイル「CopyClear010.cpp」が
対象】します!

(4-11-21)関数「int ClearRoundImage(
TypeArray* pa,double data,int n);」

    int     ClearRoundImage(                        // 周囲クリア
                TypeArray   *pa,                    // 配列
                int         data,                   // データ:整数
                int         n                       // クリア周回回数
            );

「Clear」は、英単語「Clear」でカタカナ語でもクリアー
として「きれいに成る・片付ける」、
この画像処理ライブラリでは、「同じデータを画像メモリの
画素に書き込んで同じ値にする事で一番多い例では
【0を書き込む】事で【0クリア】を行う」を意味します!
「Round」は、英単語「Round」、日本語としては
「一回り・一巡」、周囲一回りを意味します!
「Image」は、勿論、画像を意味し!
仮引数「int data」で整数型の数値を書き込む(クリアする
)値として指定します!
この画像処理ライブラリでは、「周囲=画像メモリの外枠的
な最外周」をクリアする関数を意味します!
基本関数「ClearRoundImageBase()」との違いは、
仮引数「int n」と周回数だけ指定し、水平線/垂直線と
分けて居ません!
★備考★何故、この画像の周囲をクリアする処理が必要かは
クラス【class Filter:public Calculate{}】の解説を行う
ところで説明します!
★注意★同じ型名でオーバーロード(多重定義)関数として
仮引数「double data」で浮動小数点数型を示す型の数値を
書き込む(クリアする)値として指定する関数も存在!
★詳細★は、後で説明:【ファイル「CopyClear010.cpp」が
対象】します!

(4-11-22)関数「int ClearRoundImage(
TypeArray* pa,double data,int n);」

    int     ClearRoundImage(                        // 周囲クリア
                TypeArray   *pa,                    // 配列
                double      data,                   // データ:実数
                int         n                       // クリア周回回数
            );

「Clear」は、英単語「Clear」でカタカナ語でもクリアー
として「きれいに成る・片付ける」、
この画像処理ライブラリでは、「同じデータを画像メモリの
画素に書き込んで同じ値にする事で一番多い例では
【0を書き込む】事で【0クリア】を行う」を意味します!
「Round」は、英単語「Round」、日本語としては
「一回り・一巡」、周囲一回りを意味します!
「Image」は、勿論、画像を意味し!
仮引数「double data」で倍精度浮動小数点数型の数値を
書き込む(クリアする)値として指定します!
この画像処理ライブラリでは、「周囲=画像メモリの外枠的
な最外周」をクリアする関数を意味します!
基本関数「ClearRoundImageBase()」との違いは、
仮引数「int n」と周回数だけ指定し、水平線/垂直線と
分けて居ません!
★備考★何故、この画像の周囲をクリアする処理が必要かは
クラス【class Filter:public Calculate{}】の解説を行う
ところで説明します!
★注意★同じ型名でオーバーロード(多重定義)関数として
仮引数「int data」で整数型を示す型の数値を書き込む(
クリアする)値として指定する関数も存在!
★詳細★は、後で説明:【ファイル「CopyClear010.cpp」が
対象】します!

(4-11-23)関数「int CopyRoundImage(
TypeArray* ps,TypeArray* pd,int n);」

    int     CopyRoundImage(                         // 周囲転送
                TypeArray   *ps,                    // S配列
                TypeArray   *pd,                    // D配列
                int         n                       // コピー周回回数
            );

「Copy」は、コピーするを意味し!
「Round」は、英単語「Round」、日本語としては
「一回り・一巡」、周囲一回りを意味します!
「Image」は、勿論、画像を意味し!
「CopyRoundImage」で
仮引数「TypeArray* ps,」の元画像から
仮引数「TypeArray* pd,」の結果画像へ、周囲一回りを
コピーする関数です!
仮引数「int n」と周回数だけ指定し、水平線/垂直線と
分けて居ません!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!

(4-11-24)関数「int CopyRoundImageBase(
TypeArray* ps,TypeArray* pd,int n1,int n2);」

    int     CopyRoundImageBase(                     // 周囲転送:基本
                TypeArray   *ps,                    // S配列
                TypeArray   *pd,                    // D配列
                int         n1,                     // 水平線コピー回数
                int         n2                      // 垂直線コピー回数
            );

「Copy」は、コピーするを意味し!
「Round」は、英単語「Round」、日本語としては
「一回り・一巡」、周囲一回りを意味します!
「Image」は、勿論、画像を意味し!
「Base」は、基本を意味し!
「CopyRoundImageBase」で
仮引数「TypeArray* ps,」の元画像から
仮引数「TypeArray* pd,」の結果画像へ、周囲一回りを
コピーする関数です!
仮引数「int n1,int n2」と水平線のコピー本数と
垂直線のコピー本数と縦横別に指定出来る事も特徴!
★詳細★は、後で説明:【ファイル「CopyClear020.cpp」が
対象】します!

(4-11-25)関数「int MagnifyZoom(
TypeArray* ps,TypeArray* pd,
double zh,double zv,int dataSize=1);」

    int             MagnifyZoom(                    // 拡大・縮小
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        double      zh,                             // 水平拡大率
        double      zv,                             // 垂直拡大率
        int         dataSize=1 );                   // 画素サイズ(省略時=1)

「Magnify」は、英単語「magnify」で「拡大」を意味します
「Zoom」は、画像処理ですので画像の拡大ですが拡大の
意味を拡大解釈して画像の拡大・縮小を行う関数です!
仮引数「TypeArray* ps,」は、元画像(S)
仮引数「TypeArray* pd,」は、結果画像(D)
仮引数「double zh,」は、水平方向(X軸方向)の拡大(
縮尺)率と倍精度浮動小数点数で指定!
仮引数「double zv,」は、垂直方向(Y軸方向)の拡大(
縮尺)率と倍精度浮動小数点数で指定!★注意★「zh,zv」
の「z」は、英語「Camerazoom」の略として「z」で表現
元々は、オノマトペ(多分「ズー音」)らしい?!
カメラレンズの動作音から来たと思える!その為に
関数名「magnify」と意味が有る物を使用し引数に「z」を
使用しました!
仮引数「int dataSize=1,」は、通常省略時(dataSize=1)
で1画素単位処理ですが、BMP構造も処理出来る様にした
事でBMPならば、(dataSize=3)としてカラー画像を
処理します!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!

(4-11-26)関数「int MagnifyZoomint(
TypeArray* ps,TypeArray* pd,
int zh,int zv,int dataSize=1);」

    int             MagnifyZoomInt(                 // 整数倍拡大
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        int         zh,                             // 水平拡大率
        int         zv,                             // 垂直拡大率
        int         dataSize=1 );                   // 画素サイズ(省略時=1)

「Magnify」は、英単語「magnify」で「拡大」を意味します
「Zoom」は、画像処理ですので画像の拡大ですが拡大の
意味を拡大解釈して画像の拡大・縮小を行う関数です!
仮引数「TypeArray* ps,」は、元画像(S)
仮引数「TypeArray* pd,」は、結果画像(D)
仮引数「int zh,」は、水平方向(X軸方向)の拡大(
整数倍)率と整数型で指定!
仮引数「int zv,」は、垂直方向(Y軸方向)の拡大(
整数倍)率と整数型で指定!関数名「int 」は特に分かる
様に命名しています!
★注意★「zh,zv」の「z」は、英語「Camerazoom」の略
として「z」で表現元々は、オノマトペ(多分「ズー音」)
らしい?!
カメラレンズの動作音から来たと思える!その為に
関数名「magnify」と意味が有る物を使用し引数に「z」を
使用しました!
仮引数「int dataSize=1,」は、通常省略時(dataSize=1)
で1画素単位処理ですが、BMP構造も処理出来る様にした
事でBMPならば、(dataSize=3)としてカラー画像を
処理します!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!

(4-11-27)関数「int MagnifyZoomInterpolate(
TypeArray* ps,TypeArray* pd,
double zh,double zv,
double offsetX=0.0,double offsetY=0.0,
int dataSize=1);」

    int             MagnifyZoomInterpolate(         // 拡大・縮小:補間
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        double      zh,                             // 水平拡大率
        double      zv,                             // 垂直拡大率
        double      offsetX=0.0,                    // 微少X座標オフセット
        double      offsetY=0.0,                    // 微少Y座標オフセット
        int         dataSize=1 );                   // 画素サイズ(省略時=1)

「MagnifyZoom」は、関数「MagnifyZoom()」で説明した
様に画像の拡大/縮小です!
「Interpolate」は、英単語「Interpolate」で
「補間する」を意味します!関数「MagnifyZoom()」では
例えば、縦横2倍拡大「MagnifyZoom(s,d,2,2);」を実行す
ると同じ画素の値を拡大した結果画像の方で元の画像を縦横
4画素が同じ値として格納しますが、
関数「MagnifyZoomInterpolate()」では、座標の値の
割合に応じて、書き込む画素の値を拡大してもジグザグ感を
感じ無い様に補間して書き込みます!★注意★勿論、単純な
拡大/縮小関数「MagnifyZoom()」依りも補完する為に
処理時間を余計に掛ける事に注意して下さい!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!

(4-11-28)関数「int
MagnifyZoomInterpolateByte (
TypeArray* ps,TypeArray* pd,
double zh,double zv,
double offsetX=0.0,double offsetY=0.0,int dataSize=1);」

      int             MagnifyZoomInterpolateByte(     // 拡大・縮小:補間:BYTE専用
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        double      zh,                             // 水平拡大率
        double      zv,                             // 垂直拡大率
        double      offsetX=0.0,                    // 微少X座標オフセット
        double      offsetY=0.0,                    // 微少Y座標オフセット
        int         dataSize=1 );                   // 画素サイズ(省略時=1)  

関数「MagnifyZoomInterpolate()」の
「BYTE 」と画素単位が1バイト整数型画素専用の
関数です!
★注意★関数「MagnifyZoomInterpolate()」の
サブルーチンとして作成しましたので他の型の物も作成して
いますが、この「BYTE 」が付いて居る関数だけ
「public:」属性を付けています!
使用頻度が多いからです!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!

(4-11-29)関数「int MagnifyAverage(
TypeArray* ps,TypeArray* pd,
int zh,int zv,int sw=FALSE);」

    int             MagnifyAverage(                 // 縮小:平均化
        TypeArray   *ps,                            // S配列
        TypeArray   *pd,                            // D配列
        int         zh,                             // 水平縮小率 1,2,3,4...16
        int         zv,                             // 垂直縮小率 1,2,3,4...16
        int         sw=FALSE );                     // sw=偽(省略時:平均)、真→合計

「Magnify」は、英単語「magnify」でここでは「拡大」
で無く「縮小」を意味します!
「Average」は、勿論英単語で「平均値」を意味します!
仮引数「int sw=FALSE」で省略時(sw=FALSE)の時に
幾何学的に縮小した画像の画素を平均して書き込みます!
そして「sw=TRUE」の時は、合計値にして書き込む事が
特徴です!
★詳細★は、後で説明:【ファイル「CopyClear300.cpp」が
対象】します!

(4-11-30)関数「int MoveImageByte (
TypeArray* ps,TypeArray* pd,
double offsetX,double offsetY,int dataSize=1);」

    int             MoveImageByte(                  // 平行移動:補間:BYTE
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ

「Move」は、移動するを意味し!
「ImageBYTE 」は、「BYTE型」単位画像を示し!
幾何変換としての平行移動の「BYTE型」単位画像用
サブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear350.cpp」が
対象】します!

(4-11-31)関数「int MoveImageShort (
TypeArray* ps,TypeArray* pd,
double offsetX,double offsetY,int dataSize=1);」

    int             MoveImageShort(                 // 平行移動:補間:short
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ

「Move」は、移動するを意味し!
「ImageShort 」は、「short型」単位画像を示し!
幾何変換としての平行移動の「short型」単位画像用
サブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear350.cpp」が
対象】します!

(4-11-32)関数「int MoveImageLong (
TypeArray* ps,TypeArray* pd,
double offsetX,double offsetY,int dataSize=1);」

    int             MoveImageLong(                  // 平行移動:補間:long
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ

「Move」は、移動するを意味し!
「ImageLong 」は、「long型」単位画像を示し!
幾何変換としての平行移動の「long型」単位画像用
サブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear350.cpp」が
対象】します!

(4-11-33)関数「int MoveImageFloat(
TypeArray* ps,TypeArray* pd,
double offsetX,double offsetY,int dataSize=1);」

    int             MoveImageFloat(                 // 平行移動:補間:単精度
        TypeArray*  ps,                             // S配列
        TypeArray*  pd,                             // D配列
        double      offsetX,                        // X座標(0.0~1.0)
        double      offsetY,                        // Y座標(0.0~1.0)
        int         dataSize=1 );                   // 画素サイズ

「Move」は、移動するを意味し!
「ImageFloat」は、「float型」単位画像を示し!
幾何変換としての平行移動の「float型」単位画像用
サブルーチンです!
★詳細★は、後で説明:【ファイル「CopyClear350.cpp」が
対象】します!

(4-11-34)関数「int SetMathematics(int sw);」

    int     SetMathematics(                         // 数学的設定
                int     sw                          // 0:degree/1:radian
            );

「Set」は、カタカナ語セットするとして
「Mathematics」は、英単語「Mathematics」で
数学です!ここでは、数学的なパラメータとして
関数で使用する角度を
仮引数「int sw」が、
「0:degree」⇒「度数(0~360°)」
「1:radian」⇒「ラジアン(0~2π)
で指定する事を意味します!
★注意★他の数学的なパラメータも考えたのだが、
ここでは、度数/ラジアン切り替えだけです!

★備考★
解説『解説クラスTypeArray』でも記載したが、
noteエディタの変な特性でコピペした文章の半角「*」
が消されたり、空白「 」が消される事が多々あります!
注意して手作業で修正している筈ですが、必ず、code
機能で表示して居る物を正しいとして確認して下さい

ここで一旦、切れが良い「元々サブルーチンとして作成
作成した【private属性】を付けていたが【public】属性
に変更した関数紹介が終わったので3月3日分迄の
講義とします!

続きは、「解説クラスCopyClear(8)」に成り
ます!
「(8)」では、サブルーチンとして作成した
【private属性】の関数の紹介と【protected】属性の
束縛変数に付いて紹介します!
引き続き御贔屓して受講して下さい!

文末


この記事が気に入ったらサポートをしてみませんか?