/*
 *	clipeffg.h
 *
 *	EFFect GENerator
 *
 *	* Mon Jul 24 23:04:05 JST 2017 Naoyuki Sawa
 *	- 1st 儕儕乕僗丅
 *	* Tue Jul 25 22:09:40 JST 2017 Naoyuki Sawa
 *	- EffGen_SawCir()傪僗働乕儖傪曄偊側偑傜昤夋偟偨帪偵丄梙傜偓偑曄傢偭偰偟傑偭偰偄偨僶僌傪廋惓偟傑偟偨丅
 *	  嬶懱揑偵偼丄埲壓偺捠傝偱偡丅
 *	- 椺偊偽丄埲壓偺傛偆側奼戝傾僯儊乕僔儑儞傪峴偭偨応崌偵丄偙傟傑偱偺幚憰偱偼丄枅僼儗乕儉梙傜偓偑曄傢偭偰偟傑偭偰偄傑偟偨:
 *	  劆	for(;;) {
 *	  劆		schedule();
 *	  劆		double d = (double)(now % SEC(3.0)) / (double)SEC(3.0);
 *	  劆		EffGen_SawCir(DISP_X/2,DISP_Y/2,d*50,d*100,d*50,d*150,d*200,d*50,0,32,0,fnRenderPolygon,NULL);
 *	  劆	}
 *	  僶僌偺尨場偼丄(巜掕偝傟偨梙傜偓暆+1)偱惍悢棎悢抣偺忚梋傪媮傔偰丄梙傜偓傪寛掕偟偰偄偨帠偑尨場偱偟偨丅
 *	  奼戝傾僯儊乕僔儑儞帪偵梙傜偓暆傕僗働乕儕儞僌偝傟傞偲丄惍悢棎悢抣偺忚梋偺寢壥偼僗働乕儕儞僌偱偼側偔丄柍娭學偵抣偑曄傢傞偐傜偱偡丅
 *	  惓偟偔偼丄巜掕偝傟偨梙傜偓暆偵0.0乣1.0偺棎悢抣傪妡偗偰丄梙傜偓傪寛掕偡傋偒偱偟偨丅
 *	  崱夞丄偦偺傛偆偵廋惓偟偨偺偱丄忋弎偺栤戣偼夝寛偟傑偟偨丅
 *	- 彯丄尩枾偵偼丄'巜掕偝傟偨梙傜偓暆偵0.0乣1.0偺棎悢抣傪妡偗傞'傋偒側偺偱偡偑丄frnd()偺巇條忋丄崱夞偺幚憰偱偼0.0埲忋1.0枹枮偺棎悢抣傪妡偗偰偄傑偡丅
 *	  偦偺偨傔丄巜掕偝傟偨梙傜偓暆偺嵟戝抣偺梙傜偓偑敪惗偡傞帠偼桳傝傑偣傫丅
 *	  尒偨栚偱敾傞掱偺堘偄偼惗偠側偄偲巚偆偺偱丄偙偺傑傑偲偡傞帠偵偟傑偟偨丅
 *	  傕偟尩枾偵張棟偡傞偵偼丄0.0埲忋1.0埲壓偺屌掕彫悢棎悢傪惗惉偡傞娭悢傪嶌惉偡傟偽壜擻偱丄minimum_mask_greater_than_or_equal_to()傪棙梡偡傟偽偝傎偳庤娫偼偐偐傜側偄偲巚偄傑偡丅
 *	  偟偐偟丄張棟帪娫偑憹偊傞妱偵丄摼傜傟傞棙揰偼彮側偄偲巚偆偺偱丄崱夞偼偦偺曽朄偼庢傜側偄帠偵偟傑偟偨丅
 *	* Thu Jul 27 22:18:31 JST 2017 Naoyuki Sawa
 *	- EffGen_DiaOva()傪捛壛偟傑偟偨丅
 */
#ifndef __CLIP_EFFG_H__
#define __CLIP_EFFG_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
/****************************************************************************
 *	僌儘乕僶儖娭悢
 ****************************************************************************/
void EffGen_SawCir(int   x,			//劍拞怱嵗昗
                   int   y,			//劊
                   int   radiusSunkenInner,	//堷偭崬傒偺撪懁敿宎		劍(radiusSunkenInner亝radiusSunkenOuter)昁恵丂劅劍劅劅(radiusSunkenInner亝radiusRaisedInner)昁恵
                   int   radiusSunkenOuter,	//堷偭崬傒偺奜懁敿宎		劊劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劆劉劉
                   int   radiusSunkenFluct,	//堷偭崬傒偺敿宎偺梙傜偓暆	(radiusSunkenFluct亞0)				劆劆劌((radiusSunkenOuter+radiusSunkenFluct)亝radiusRaisedInner)偑朷傑偟偄偑昁恵偱偼側偄丅
                   int   radiusRaisedInner,	//弌偭挘傝偺撪懁敿宎		劍(radiusRaisedInner亝radiusRaisedOuter)昁恵丂劅劊劆劊
                   int   radiusRaisedOuter,	//弌偭挘傝偺奜懁敿宎		劊劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劏劅(radiusSunkenOuter亝radiusRaisedOuter)昁恵
                   int   radiusRaisedFluct,	//弌偭挘傝偺敿宎偺梙傜偓暆	(radiusRaisedFluct亞0)
                   fixed angleOrg,		//婎弨妏搙			堦暘妱栚偺堷偭崬傒偺捀揰偑偳偺妏搙偐傜惗惉偝傟傞偐傪巜掕偡傞丅摿偵婥偵偟側偄側傜偽忢偵0傪巜掕偟偰峔傢側偄丅
                   int   nDiv,			//暘妱悢			(nDiv亞3)	堷偭崬傒偲弌偭挘傝偺慻傒崌傢偣偱堦偮偲悢偊傞丅
                   int   seed,			//棎悢僔乕僪			僄僼僃僋僩偺屄乆偺僀儞僗僞儞僗枅偵枅夞摨偠抣傪巜掕偟偰壓偝偄丅摿偵婥偵偟側偄側傜偽忢偵0傪巜掕偟偰峔傢側偄丅
                   void (*fnRenderPolygon)(const int xy[/*n*/][2/*x,y*/], int n/*3or4*/, void* arg),	//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢
                   void* arg);										//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢傊堷偒搉偡擟堄偺僨乕僞
void EffGen_SawArc(int   x,			//劍拞怱嵗昗
                   int   y,			//劊
                   int   radiusSunkenInner,	//堷偭崬傒偺撪懁敿宎		劍(radiusSunkenInner亝radiusSunkenOuter)昁恵丂劅劍劅劅(radiusSunkenInner亝radiusRaisedInner)昁恵
                   int   radiusSunkenOuter,	//堷偭崬傒偺奜懁敿宎		劊劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劆劉劉
                   int   radiusSunkenFluct,	//堷偭崬傒偺敿宎偺梙傜偓暆	(radiusSunkenFluct亞0)				劆劆劌((radiusSunkenOuter+radiusSunkenFluct)亝radiusRaisedInner)偑朷傑偟偄偑昁恵偱偼側偄丅
                   int   radiusRaisedInner,	//弌偭挘傝偺撪懁敿宎		劍(radiusRaisedInner亝radiusRaisedOuter)昁恵丂劅劊劆劊
                   int   radiusRaisedOuter,	//弌偭挘傝偺奜懁敿宎		劊劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劅劏劅(radiusSunkenOuter亝radiusRaisedOuter)昁恵
                   int   radiusRaisedFluct,	//弌偭挘傝偺敿宎偺梙傜偓暆	(radiusRaisedFluct亞0)
                   int   radiusTaper,		//椉抂偺峣傝敿宎		(radiusTaper亝radiusSunkenInner)
                   fixed angleMin,		//奐巒妏搙			劍(angleMin亝angleMax)
                   fixed angleMax,		//廔椆妏搙			劊
                   int   nDiv,			//暘妱悢			(nDiv亞3)	堷偭崬傒偲弌偭挘傝偺慻傒崌傢偣偱堦偮偲悢偊傞丅
                   int   seed,			//棎悢僔乕僪			僄僼僃僋僩偺屄乆偺僀儞僗僞儞僗枅偵枅夞摨偠抣傪巜掕偟偰壓偝偄丅摿偵婥偵偟側偄側傜偽忢偵0傪巜掕偟偰峔傢側偄丅
                   void (*fnRenderPolygon)(const int xy[/*n*/][2/*x,y*/], int n/*3or4*/, void* arg),	//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢
                   void* arg);										//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢傊堷偒搉偡擟堄偺僨乕僞
void EffGen_Circle(int   x,			//劍拞怱嵗昗
                   int   y,			//劊
                   int   radiusInner,		//撪懁敿宎			劍(radiusInner亝radiusOuter)昁恵
                   int   radiusOuter,		//奜懁敿宎			劊
                   fixed angleOrg,		//婎弨妏搙			堦暘妱栚偺捀揰偑偳偺妏搙偐傜惗惉偝傟傞偐傪巜掕偡傞丅摿偵婥偵偟側偄側傜偽忢偵0傪巜掕偟偰峔傢側偄丅
                   int   nDiv,			//暘妱悢			(nDiv亞3)	堷偭崬傒偲弌偭挘傝偺慻傒崌傢偣偱堦偮偲悢偊傞丅
                   void (*fnRenderPolygon)(const int xy[/*n*/][2/*x,y*/], int n/*3or4*/, void* arg),	//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢
                   void* arg);										//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢傊堷偒搉偡擟堄偺僨乕僞
void EffGen_DiaOva(int   x,			//劍拞怱嵗昗
                   int   y,			//劊
                   int   radiusShort,		//抁幉敿宎			 angleRot      偱昞偝傟傞幉傪丄曋媂忋丄抁幉偲屇傇帠偵偟傑偡丅	劍昁偢偟傕(radiusShort亝radiusLong)偱側偔偰傕峔偄傑偣傫丅(radiusShort亜radiusLong)偱傕栤戣桳傝傑偣傫丅
                   int   radiusLong,		//挿幉敿宎			(angleRot+兾/2)偱昞偝傟傞幉傪丄曋媂忋丄挿幉偲屇傇帠偵偟傑偡丅	劊
                   fixed angleRot,		//夞揮妏搙
                   int   nDiv,			//暘妱悢			(nDiv亞3)
                   void (*fnRenderPolygon)(const int xy[/*n*/][2/*x,y*/], int n/*3*/, void* arg),	//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢	摉娭悢偐傜傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢(fnRenderPolygon)傪屇傃弌偡応崌偼忢偵(n=3)偲側傝傑偡偑丄懠偺娭悢偐傜屇傃弌偝偡応崌偺堷悢(n=3or4)偲摑堦偡傞偨傔偵丄摉娭悢偐傜傕堷悢n傪巜掕偡傞帠偵偟傑偟偨丅
                   void* arg);										//傾僾儕働乕僔儑儞掕媊偺億儕僑儞昤夋娭悢傊堷偒搉偡擟堄偺僨乕僞
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_EFFG_H__
