解説クラス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)』に続きます