見出し画像

解説クラスCopyClear(15)

解説クラスCopyClear(15)


2025年1月19初講(初稿)

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

(4-14-37)関数「int MakePattern(TypeArray* pd,int k,int data){・・・}」の説明

/************************************************************************/
/*****  パターン画像を発生するコマンド                      :実行部*****/
/*****  MAKE_PATTERN,m,[,k[,data]]                *****/
/************************************************************************/

int             CopyClear::MakePattern(
    TypeArray   *pd,                                // D配列
    int         k,                                  // Pattnの種類1..6
                                                    // 1:水平増加Pattn
                                                    // 2:垂直増加Pattn
                                                    // 3:増加右下がり
                                                    // 4:増加右上がり
                                                    // 5:ColPat8色
                                                    // 6:ColPat11色
    int         data                                // Pattn初期値等
){
    int         sti;                                // ステータス情報

    if( k <= 4 ){                                   // Pattn1~4なら
        if( k == 1 ){                               // Pattn1の場合
            sti = make_134_pattern( pd, data, 0 );  // 0で水平Pattn実行
        }else if( k == 2 ){                         // Pattn2の場合
            sti = make2pattern( pd, data );         // 左記を実行
        }else if( k == 3 ){                         // Pattn3の場合
            sti = make_134_pattern( pd, data, 1 );  // 左記を実行
        }else{                                      // Pattn4の場合
            sti = make_134_pattern( pd, data, -1 ); // 左記を実行
        }                                           //
    }else if( k <= 6 ){                             // Pattn5~6なら
        if( data < 0 || data > 5 ){                 // 選択子が範囲外の
            return( STI_FLG );                      // 場合、不正返す
        }                                           //
        if( k == 5 ){                               // Pattn5の場合
            sti = make5pattern( pd, data );         // 左記を実行
        }else{                                      // Pattn6の場合
            sti = make6pattern( pd, data );         // 左記を実行
        }                                           //
    }else{                                          // 上記以外なら
        return( STI_FLG );                          // 不正を返す
    }                                               //
    return( sti );                                  // ステータスを返す
}

☆備考☆この関数はファイル「CopyClear200.cpp」に存在!
★注意★この関数は「public:」属性ですのでライブラリの
外から使用可能です!

(A)関数「MakePattern()」の【関数名】説明

「Make」は、作成するで
「Pattern」は、勿論、パターンです!ココでは、色々な
パターン画像を作成する関数のです!

(B)関数「int MakePattern()」の【返値】説明

この関数内で明示的に検査しているのは、
仮引数「int k,」がパターン作成の種類「1..6」の範囲
検査で範囲外ならば、エラーコード「STI_FLG」を返し、
他は、呼び出したサブルーチン関数の値を辺値として返し
ます!

(C)関数「MakePattern()」の【仮引数】説明

int             CopyClear::MakePattern(
    TypeArray   *pd,                                // D配列
    int         k,                                  // Pattnの種類1..6
                                                    // 1:水平増加Pattn
                                                    // 2:垂直増加Pattn
                                                    // 3:増加右下がり
                                                    // 4:増加右上がり
                                                    // 5:ColPat8色
                                                    // 6:ColPat11色
    int         data                                // Pattn初期値等
){

「TypeArray* pd,」は、クラス「TypeArray」で定義
した画像メモリ情報を示します!★注意★暫く、画像メモリ
自体を扱う関数を離れていたので?!もう一度、解説?!
「TypeArray* 変数」で画像メモリを扱います★備考★ここ
では、パターン画像を結果画像として書き込む画像としての
「destination」の「d」を結果の意味に使用します!
「int k,」は、作成するパターン画像の種類で
「k=1」⇒水平増加インクリメントパターン
「k=2」⇒垂直増加インクリメントパターン
「k=3」⇒増加右下がりデクリメントパターン
「k=4」⇒増加右上がりデクリメントパターン
「k=5」⇒標準TVパターン8色
「k=6」⇒標準TVパターン11色
「int data」は、インクリメント/デクリメント初期値及び
選択肢が「k=5」・「k=6」の場合は、色画像(RGB3
原色)の内の一つを選択

(D)関数「MakePattern()」の【アルゴリズム】説明

){
    int         sti;                                // ステータス情報

    if( k <= 4 ){                                   // Pattn1~4なら
        if( k == 1 ){                               // Pattn1の場合
            sti = make_134_pattern( pd, data, 0 );  // 0で水平Pattn実行
        }else if( k == 2 ){                         // Pattn2の場合
            sti = make2pattern( pd, data );         // 左記を実行
        }else if( k == 3 ){                         // Pattn3の場合
            sti = make_134_pattern( pd, data, 1 );  // 左記を実行
        }else{                                      // Pattn4の場合
            sti = make_134_pattern( pd, data, -1 ); // 左記を実行
        }                                           //
    }else if( k <= 6 ){                             // Pattn5~6なら
        if( data < 0 || data > 5 ){                 // 選択子が範囲外の
            return( STI_FLG );                      // 場合、不正返す
        }                                           //
        if( k == 5 ){                               // Pattn5の場合
            sti = make5pattern( pd, data );         // 左記を実行
        }else{                                      // Pattn6の場合
            sti = make6pattern( pd, data );         // 左記を実行
        }                                           //
    }else{                                          // 上記以外なら
        return( STI_FLG );                          // 不正を返す
    }                                               //
    return( sti );                                  // ステータスを返す
}

(D-1)ローカル変数

){
    int         sti;                                // ステータス情報

「int sti;」は、ステータス情報(エラー情報)の
一時置き場!

(D-2)アルゴリズムコード

    if( k <= 4 ){                                   // Pattn1~4なら
        if( k == 1 ){                               // Pattn1の場合
            sti = make_134_pattern( pd, data, 0 );  // 0で水平Pattn実行
        }else if( k == 2 ){                         // Pattn2の場合
            sti = make2pattern( pd, data );         // 左記を実行
        }else if( k == 3 ){                         // Pattn3の場合
            sti = make_134_pattern( pd, data, 1 );  // 左記を実行
        }else{                                      // Pattn4の場合
            sti = make_134_pattern( pd, data, -1 ); // 左記を実行
        }                                           //
    }else if( k <= 6 ){                             // Pattn5~6なら
        if( data < 0 || data > 5 ){                 // 選択子が範囲外の
            return( STI_FLG );                      // 場合、不正返す
        }                                           //
        if( k == 5 ){                               // Pattn5の場合
            sti = make5pattern( pd, data );         // 左記を実行
        }else{                                      // Pattn6の場合
            sti = make6pattern( pd, data );         // 左記を実行
        }                                           //
    }else{                                          // 上記以外なら
        return( STI_FLG );                          // 不正を返す
    }                                               //
    return( sti );                                  // ステータスを返す
}

「if(k<=4){・・【4以下】分岐中身・・}
else if(k<=6){・・【6以下】分岐中身・・}else{
return(STI_FLG);}」は、仮引数「int k,」パターン種類が
4以下の場合を分岐中身で処理、その中身
「if(k==1){sti=make_134_pattern(pd,data,0);}
else if(k==2){sti=make2pattern(pd,data);}
else if(k==3){sti=make_134_pattern(pd,data,1);}
else{sti=make_134_pattern(pd,data,-1);}」は、内側の
分岐条件「k==1」で内側の成立「sti=make_134_pattern(
pd,data,0);」で種類が「1」ならサブルーチン関数「
make_134_pattern()」で処理し関数辺値を「sti」にセット
分岐条件「k==2」で内側の成立「sti=make2pattern(
pd,data);」で種類が「2」ならサブルーチン
関数「make2pattern()」で処理し関数辺値を「sti」にセッ
ト、分岐条件「k==3」で内側の成立「
sti=make_134_pattern(pd,data,1);」で種類が「3」なら
サブルーチン関数「make_134_pattern()」で処理し関数
辺値を「sti」にセット、それ以外、詰り分岐条件「k==4」
で内側の成立「sti=make_134_pattern(pd,data,1);」で
種類が「4」ならサブルーチン関数「make_134_pattern()
」で処理し関数辺値を「sti」にセットと内側分岐を終え!
外側分岐「else if(k<=6){」と【6以下】分岐中身を説明
「if(data<0||data>5){return(STI_FLG);}」で色指定子が
「0..5」の範囲に入って居るか否かで範囲外ならエラー
コード「STI_FLG」を関数辺値とし返し関数終了!
分岐条件「k==5」で成立「sti=make5pattern(pd,data);」と
サブルーチン関数「make5pattern()」でパターン作成!
不成立「sti=make6pattern(pd,data);」とサブルーチン
関数「make6pattern()」でパターン作成!
外側分岐不成立「return(STI_FLG);」ならエラーコード
「STI_FLG」を関数辺値とし返し関数終了!
最後に「return(sti);」で各サブルーチン関数の辺値を
関数の辺値として返し関数終了!
★注意★サブルーチン関数「make5pattern()」及び、
「make6pattern()」の「,data」の実引数は「色指定」です
が、ソレゾレサブルーチン関数の解説を参照して下さい!

(E)関数「MakePattern()」の【備考】

パターン画像

ココで作成するパターン画像は上記のイメージです!
本日(1月19)の講義はココまでとします!
流石に新しくと言うか「パターン画像作成」の話を扱ったの
で受講者の皆様が消化出来る為にココまでとします!
受講されている皆様の中には、サブルーチン関数を呼んで
その中で処理とお茶を濁し、中身を説明して無く、直ぐに
別の項目へ解説を移す事に違和感を覚えているかも知れませ
んが、解説前に読み込んで理解して居る人には判る様に
ヘッダファイル「CopyClear.h」に関数の定義として並んで
居る順番に従った順番で解説して居る事に理解して下さい!
兎も角、膨大な量なので個別に動作を解説して居たら重複し
た解説の塊に成る可能性が高く、ヘッダファイルの記載順番
に従って重複解説を避けたのです!
次から幾何学的画像変換を扱いますので別の解説
解説『解説クラスCopyClear(16)』に続きます

文末

いいなと思ったら応援しよう!