B-right/V sample application - IMGVIEW()


1. Ϥ

 sample program  jpeg / png / MS-Windows DIB(bmp) ɽ application Ǥ
äˡʲҲ𤹤٤ΤΤǤ

	1. Խоݤμ¿ȤβȤ鵯ư줿б
	   äˡȤΥץưȤɽưȤ TAD ǡưбˤƤޤ
	2. size Ѥ window ν
	3. libapp  evt_loop() Ѥ window event 
	4. libimg ˤɤ߹
	5. C++ ˤ BTRON  application γȯ

ʤ application ϸϻޤ󡣤 application εǽ䵤¿ȤŽդμ¿ȤŽդ䵤Ǽ¹Ԥ뤳ȤˤꡢѤ뤳ȤǤ褦ˤʤäƤޤ




2. application γ

 application εǽŪʼŪ jpeg  png ȤäBTRON ǤɸǤɽԤȤˤޤ
ޤŪȤơưβȤؤ¿Ȥν䡢ưȤФȤȤŪˤޤ
ΤȤƧޤʲμؿˤ˴ŤΤȤޤ

	1. ɤ߹ߤ libimg ˰Ǥ(libimg бΤߤȤ)
	2. window ϲ size Ȥscroll bar 
	3. ɽϡΨʳڤؤ뤳ȤǽȤ
	4. ߤɽƤ tray ʣ̤Ǥ
	5. ȤΥץưǡʪǤб(ư׵᤬ M_EXECREQ Ǥ)
	6. Ȥɽưб(ư׵᤬ M_DISPREQ Ǥ)
	7. Ȥ TAD ǡưб(ư׵᤬ M_TADREQ Ǥ)

ɤ߹ߤ˴ؤƤϡlibimg Ѥ뤿ᡢޤʣʽϼƤޤ
ǤΤǤ application ǽŪ˼٤ʤΤϡʲ˹ʤƤޤ

	1. ư׵˴ŤưȤν(äˡ)
	2. window δ window event ν
	3. menu ν

ϡGUI ˤ BTRON application δŪʬΰΤȸޤ(GUI ˴ؤƤϡ¾ˡparts 䲾ȤФʤɤޤƤϴޤޤƤޤ)
ޤwindow event ˤĤƤϡlibapp  evt_loop()(evt_proc()) Ѥ뤳ȤǼƤޤΤǡ library λȤˤĤƤƤޤ
menu ˤĤƤ¾ application ǤѤƤ롢̤ menu μԤޤ(ᥤ˥塼ȸƤФƤޤ) menu νˤĤƤ⡢libapp ѤƤޤ




3.  program ή

3.1. application εư

 application ϡBTRON  GUI application Ǥꡢcli ưˤбʤȤȤƤޤΤᡢmain() ѤMAIN() Ѥޤ
ǤΤǡưΰ MESSAGE* msg Ȥʤޤ

application  MAIN() äǡ _StartupError ȤѿɾƤޤ libmain 󶡤ƤѿǤꡢstartup βǰ۾郎ȯƤˡ application Τ٤ΤΤǤ
ؤɤξ硢 error Ȥʤ뤳ȤϤʤȻפޤȤСͭ library η˼Ԥʤɤξˤϡerror ȤʤޤΤǡΤ褦ʾˤϤߤ䤫˽λʤФʤޤ
ޤapplication νβǡerror ȯ( application Ǥ exception ꤲ褦ˤƤޤ)Ǥ⡢application μ¹ԤˤޤΤǡξˤ®䤫˽λɬפȸޤ

error λˤ⡢OS ¦ application νλΤɬפޤΤǡưˡ˱ơoend_prc() ʤ oend_req() ȯԤƤɬפޤ
ɤεưˡǤɤα֤٤[BTRON3ͽ][2 OS][軰 ][3.8 ¿/ȥޥ͡][3.8.3 ¿/ȥޥ͡ξܺ][3.8.3.3 ץꥱץεư]ǽҤ٤Ƥޤ application Ǥ errext_rsp() ȤؿǼ¸褦ˤƤޤ

դˡ˵ưƤˤϡ缡ɬפʽ򤷤ƤʤФʤޤ
 application ǤϡΤ˶̤ ex_main() ȤؿǹԤ褦ˤƤޤǤϡlibrary νȯԤ䡢databox  open ʤɤԤäƤޤ(library νϲ̾ʬνȡpanel ϤνԤäƤޤޤ application ƤǤϤޤ󤬡򤹤褦 application ǤäꤹϡѻξʤɤʬνɬפȤʤޤ)
databox  open ٤ˡ application ¿Ȥ LINK ƤޤǻѤƤ prc_inf()  B-right/V Ǥɲ system call ǤΤǡդƤBTRON1   ¾ BTRON3 ͤδĶǤϼ¹ԤǤʤ礬ޤ
ޤˡ LINK ƤΤϡ cli ưǤäˤбǤ褦ˤ٤֤Ǥäưˡξˡdatabox ƤѤɬפʤΤǤСư message ƤѤǤ礦

3.1.1. ưˡζ

ˡưˡ˱뤳Ȥˤʤޤǵưˡ̤ class 㤨Ƥ뤳ȤդƤ
ϡưˡ˽ƤѤ١Τ褦ˤƤޤ
 class  IMGVIEW_APPL Ȥ class  class ȤƤѾƤޤºݤ application μ¹Ԥ˴ͿΤϡƷѾ class ȤƤޤ
ǤϳƵưˡ˱ƤˤĤơ򤷤Ƥޤ

3.1.1.1. M_EXECREQ(ȤΥץư)

εưˡб class  IMGVIEW_EXREQ ȤΤˤʤäƤޤ
ˡϡ()ŪʲȤμ¹ԤбƸƤФˡǤꡢȤ [ӥͥåȤ򲾿ȰǼ¹Ԥ] Ȥ[ѻʸԽǳ] ȤȤäˤϡ¿ξ硢βȤΥץư application ¹ԤơȤλؤ¿ȤԽ֤뤳Ȥ̣ޤ
ޤˡϾʪưξޤޤޤΤǡʪ application ǤϤʤˤϡʪưбƤϤޤ(̤Ͼʪ application ȤϿƤʤ application ʪư뤳ȤϤǤޤ)
ǤΤǡ application ξ硢ưˡȽκݤ˾ʪưǤ oend_prc() ȯԤ application νλΤerror panel  user Τ褦ˤƤޤ(ʤεưˡξ osta_prc() ǵưΤoend_prc() ǽλΤ뤳ȤȤʤäƤޤưˡǤϡosta_prc() ȯԤ뤳ȤǤޤΤǡoend_prc() ȯԤȤʤäƤޤ)

 application Ǥϡˡǵư줿ϡwindow 򳫤Ƽ¿Ȥβɽ뤳ȤȤƤޤΤǡGUI ϢޤȤ᤿ class Ǥ GUIOPE  object 򤷤Ƥޤ class  object ǡ˽ƤӽФƤޤǽƳƼ GUI Ϣ object Ԥ褦ˤƤޤ
GUI Ϣ object ϡ application Ǥϰʲ 3 ̤Ƥޤ

	1. event loop(EVTOPE Ȥ class)
	2. 祦ɥ(MAINWIN Ȥ class)
	3. ᥤ˥塼(MAINMENU Ȥ class)

줾 constructor ǤϡƤ˱ԤäƤޤܤƤϸҤޤ
νβǼ祦ɥޤΥɥǡOS ¦ osta_prc() ȯԤޤˤꡢưȤμ¹Ԥ졢ɽ¹Ծ֤Ѳޤ

ʾνλСevent loop ޤ
ʤ˼ԤϡIMGVIEW_EXREQ  destructor ˤä oend_prc() ȯԤ졢¹Խλ OS Τ褦ˤʤäƤޤ

3.1.1.2. M_DISPREQ(Ȥɽư)

εưˡб class  IMGVIEW_DSPREQ ȤΤˤʤäƤޤ
ˡǵư줿硢ưβȤȤȤʤäƤꡢγȤɽƤ application ¦ɽ򤷤ʤФʤʤȤȤˤʤäƤޤ(ɽǤʤˤϡ褦ˤʤäƤޤ OS ¦ǹԤäƤޤŪˤϡεưˡǵư줿ˡoend_req() ǰ۾ｪλǤ뤳ȤΤ褦ˤޤȡOS ¦(¿Ȳȥޥ͡)ǳȤϼˤ褦ˤޤդˡｪλΤȡɽƤˤƤʤȡȤɽ۾ʤΤȤʤޤΤǡбˤϤäбʤФʤޤ)

ˡǵư줿ϡư message ˤϳȤɽоݤȤʤ롢Ķ ID ޤޤƤޤȤɽ򤹤ϡĶФƽԤ褦ˤƤޤŪˤϡĶбɥ򳫤ξǤĶФԤ褦ˤƤޤ

 application Ǥϡ¿βɽ뤳ȤŪǤΤǡɤ߹ߤԤäƤޤޤɽƤϲȤΥץưǤɽ¨褦ˤƤޤΤǡ䵤ɤ߹褦ˤƤޤ
ξǡOPNDSP Ȥ class  object 򤷤Ƥޤ class ϼºݤɽԤ碌٤ʬʤΤǤIMGVIEW_DSPREQ ɽޤǤˡ̤ class ȤƤΤϡȤΥץưνλβǡưȤȤǤäб뤿ˤΤ褦ˤʤäƤޤ
 OPNDSP Ȥ class  constructor Ķбɥ򳫤ξǼºݤ˲Ԥ褦ˤƤޤ
ʤǲ餫ΰ۾ˤäɽԤʤäˤ oend_req() ǰ۾Τ򤹤褦ˤƤʤФʤޤ󤬡εưˡǤɽ򤹤ǡä event loop ⤢ޤΤǡ۾郎ȯСIMGVIEW_DSPREQ ȴdestructor ƤФ褦ˤƤޤ
 destructor Ǥ oend_req() ȯԤ褦ˤƤꡢ¨ǳȤɽưǡɽԤΤ褦ˤƤޤɽޤǤϡ API ؤΰ(rspflg) 1 褦ˤƤޤĤޤꡢ餫ΰ۾ȼäơѴϡ˰۾ΤȤ褦ˤƤޤ

ʤεưˡǤϡưȼäƵưΤɬפϤޤ(osta_prc() ȯԤɬפޤ)ޤ̤ϼ¿Ȥι䵤ι⤷ޤΤǡoend_prc() ȯԤΤǤ⤢ޤ

3.1.1.3. M_TADREQ(Ȥ TAD ǡư)

εưˡб class  IMGVIEW_TADREQ ȤΤˤʤäƤޤ
ˡϡȤ갷Ȥ̣ǤϡM_DISPREQ(Ȥɽư)ȻƤޤM_DISPREQ ξĶФ򤹤(pixelmap )ΤФ M_TADREQ ǤɽƤ¨ TAD data Ȥ˰㤤ޤ
Τᡢ˼¿Ȥʸϼ¿ȤǤäˤϡɽƤ¨ʸ data ʤФʤʤȤ̣ޤ
εưˡϡȤгȤݤ˸ƤӽФ줿ꤷޤ

ˡǤϡ TAD data ϲ餫μ¿Ȥ¸뤳ȤˤʤäƤޤоݤȤʤ¿Ȥϵư message ˤ LINK Ϳ褦ˤʤäƤޤ
ξ硢¸оݤȤʤ¿Ȥ OS ¦ƤޤΤǡ׵ˤϡμ¿Ȥ opn_fil() ˤäƳTAD data ¸Ԥ褦ˤޤ
ޤȤȤƤɽΰⵯư message ˴ޤޤƤޤΤǡapplication ¦ǤϡζȤ˱Ƥ뤳Ȥˤʤޤ
ʤ¸顢¸оݤȤʤ¿ȤĤƤʤФʤޤ(cls_fil() ȯԤ)

 application Ǥϡñ˲(pixelmap)ɽޤΤǡȤɽϰϤ˱ BMP ¸μ¿Ȥ TS_IMAGE()ƤȤ¸ˤƤޤ
¸ˤĤƤϡSAVEDAT Ȥ class ǹԤ褦ˤƤޤܤƤˤĤƤϳ䰦ޤ

 M_DISPREQ бϡ M_TADREQ ˤбƤ٤ȸޤ

3.1.1.4. ¾εưˡνʬ

бεưˡˤĤƤϡerror λȤ褦ˤƤޤ
ưˡȽʬ(ex_main() Ȥؿ)ǡбεưˡϻ OS ˰۾ｪλΤξ exception ꤲ褦ˤƤޤ

3.1.2. event loop ޤǤν(ȤΥץư)

M_EXECREQ(ȤΥץư)λνήˤĤƤϡ˴ñɤäƤޤǤϤκݤ줿 object νˤĤƿ줿Ȼפޤ
κݤˡIMGVIEW_EXREQ Ū object ϰʲΤΤˤʤޤ

	1. FUSEN fsn
		䵸ͭǡɤ߹ߡ񤭹ߡʤɤԤ̡
	2. GUIOPE gui
		GUI Ϣ object ޤȤ᤿̡
	3. EVTOPE evtope
		evt_loop() ФޤȤ᤿̡GUIOPE ֤Ƥ롣
		evt_loop() ؤ wrapper Τ褦ʤΡ
	4. MAINWIN mwin
		祦ɥ̡GUIOPE ֤Ƥ롣
	5. MAINMENU menu
		ᥤ˥塼̡GUIOPE ֤Ƥ롣
		libapp Υᥤ˥塼Ϣδؿؤ wrapper ߤʤΡ

 object λȡevt_loop() μ¹ԤɬפƤ꤬λ褦ˤʤäƤޤΤǡξ evt_loop() ƤӽФ졢event loop Ϥ褦ˤʤäƤޤ

3.1.2.1. 䵸ͭǡɤ߹

䵸ͭǡϡưˡˤƤμλѤޤ
ܤ[BTRON3ͽ][2 OS][軰 ][3.8 ¿/ȥޥ͡][3.8.3 ¿/ȥޥ͡ξܺ][3.8.3.3 ץꥱץεư]ǽҤ٤ƤޤǤɤ߹ˡμˤĤޤ
(Թ塢M_EXECREQ(ȤΥץư)νǲ⤷ƤޤºݤˤбƤεưˡƤϤޤƤǤ)

λϡưȤλؤ¿Ȥμ¹Եǽ䵤ɤ߹ȡ¿Ȳȥޥ͡δƤФˡ̤꤬ޤ
ԤξϡM_EXECREQ ξΤߤѤˡǤɬ⤳εưˡλˤԤˡѤȤϸ¤ޤ󡣾ˤäƤϼ¿Ȳȥޥ͡δƤʤФʤʤ⤢ޤ
ˤĤƤϡM_EXECREQ.mode Ƥɾ뤳ȤˤȽ̤ޤ
ǡɤ߹ɬפˤϡ¿Ȥ򳫤(opn_fil() ȯԤ)oget_fsn() ˤäƤޤ
դˡ¿Ȳȥޥ͡δƤϡM_EXECREQ.info 䵸ͭǡƤ¸ߤ pointer ȤʤäƤޤΤǡƤ memcpy() ˤäƼƤޤ

;̤Ǥμˡ libapp  get_fsn_data() ȳƱνˤʤäƤޤ

3.1.2.2. GUI 紴ν

 class ñ GUI Ϣ̤ޤȤ᤿ǤΤǡ class ΤνȤΤؤɲ⤢ޤ
 class δƤ GUI ϢǤϽפƤФǤΤǡ class ͳơѴ򤹤褦ˤƤޤ

äˡ祦ɥˤĤƤϡwindow ɬפǤ˾ˤäƤ parts ʤɤɬפȤʤޤ( application Ǥ parts ϼ갷ޤΤǡƳȤʤޤ)νϤ class ƤӽФ褦ˤʤäƤޤ

3.1.2.3. evt_loop() Ф

GUIOPE.init()  EVTOPE  object 졢constructor ƤӽФޤ constructor  libapp  evt_loop() ɬפƤνԤ褦ˤƤޤ
Ūˤϡɥ쥳ɤȥɥ٥ȴؿơ֥νԤäƤޤ

ԤΤΤϡapplication δ window  library(evt_loop() / evt_proc()) ٤ɬפʤΤǤ EVTOPE 줿ʳǤ window ƤʤᡢºݤνϳƥɥǹԤ褦ˤʤäƤޤ

ԤΤΤϡ event ξܤƤ򵭽Ҥ뤿ΤΤǤ
evt_loop()(evt_proc())  wget_evt() ˤäơwindow event Ĥν򤷤ޤԤϿŪʤΤǤäơ window μºݤν򵭽ҤƤΤǤϤޤ
ޤapplication ˹Ԥưϰ㤦ȤؤɤǤΤǡǽŪ event ν evt_loop() Ȥ application ¦Ǥޤ
application ¦ǤϽʤ(ɬפʤ)ȤΤ⤢ޤΤǡäƤˤĤƤϡlibrary ˽ʬ뤳ȤǤ褦ˤʤäƤޤ

evt_loop()  application Ϥ event ϸꤷΤȤʤäƤꡢ줬 table η褦ˤʤäƤޤ
 table ϰʲΤΤȤʤäƤޤ

	1. Хå饦ɽ
		W bgfn()
		window  inactive ֤Ǥɽ(event )Ԥ˸ƤӽФΤǤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤ
	2. ɥ
		void idlefn()
		event type  EV_NULL ξ˸ƤӽФޤ
		ȤǤ䡢ݥ󥿷ѹparts ԤȤؤɤǤ
	3. ̥å
		W msgfn(MESSAGE* msg)
		event type  EV_MSG λ˸ƤӽФΤǤ(process  message ˸ƤӽФΤǤ)
		msg ϼ message  8 byte(= sizeof(W) * 2) ݴɤƤ pointer ؤޤΤᡢmsg->msg_type  msg->msg_size ȲǽȤʤޤ
		δؿ NULL ˤ clr_msg(MM_ALL, MM_ALL) ȯԤ졢 message ʬޤ
		դˡδؿꤷϡmessage νʬ application ǤˤʤޤΤǡ message κ application ¦ȯԤʤФʤޤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤ
	4. ˥塼
		W menufn()
		event type  EV_MENU λ˸ƤӽФΤǤ
		ᥤ˥塼򳫤 application ǤϡɬδؿꤷʤФʤޤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤ
	5. ɽ
		void dspfn(W ix, W mode, RECT* newr)
		׵(event type  EV_REQUEST  WEVENT.r.cmd  W_REDISP)ξ˸ƤӽФΤǤ
		window 򳫤 application ǤɬʤФʤޤ
		ʤlibrary ü쵡ǽȤơevt_loop() Ƽ¹Ԥˤ⡢ɬϸƤӽФޤ( mode  -1 λǤ)λϺ׵ǤϤʤwindow νȤƽ뤳Ȥˤʤޤνλ application Ǽͳ˼뤳ȤǤޤ
		ޤmode  0 ʾͤξϡOS κ׵Ǥꡢwsta_dsp() - wend_dsp() ˤäơ׵μ򤷤ʤФʤޤ
		ʤȡapplication  event νưʤʤޤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
	6. Ѳ
		void stsfn(W ix, W sts)
		 window ֤ܤȼΤǡactive ֤ inactive ֤ܤꡢդ inactive ֤ active ֤ꡢpanel Ĥꡢ¾ window Ĥꤷݤȯ׵Ǥ
		äˡinactive  active 硢Ū window  parts ɽ֤ȤʤäƤޤΤǡɽ(cdsp_par() ʤ cdsp_pwd() ȯ)ɬפޤ
		ޤ tray ͳŽߤΡŽߤμ¹Ի⡢inactive  active ˹Ԥ뤿ᡢpaste ξ֤ӵ褦ꤷʤФʤޤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
	7. Ͻ
		W keyfn()
		event type  EV_KEYDWN ʤ EV_AUTKEY ξ˸ƤӽФΤǤ
		key ϽˤĤƤϡʣ window ƤƤ⡢ɤ window ФΤǤΤꤵƤΤǤϤޤ
		Τᡢwindow ̡ν򤹤ˤϡapplication ¦ǽʤФʤޤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤ
	8. ܥץ쥹
		W presfn(W ix)
		ɥܥ press ˸ƤӽФΤǤwindow ΰ click ˤäơinactive  active  ˤƤӽФޤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤ
	9. λ
		W finfn(W ix, W mode)
		ɥФ뽪λ׵˸ƤӽФޤ
		׵Ƥ mode ˵ҤƤޤ
		δؿ OS  application λ׵ξˤƤӽФΤǡδؿʤȡOS λʤʤ붲줬ޤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤä OS ζλ׵ξ硢W_ACK ֤ƽλ׵Ȥ OS Τޤ
	10. Ž׵
		W pastefn(W ix, PNT pos)
		wsnd_evt() ˤäơŽ׵˸ƤФޤŪˤϡ¾Υɥ drag Žߤ򤷤褦ȤΤȤˤʤޤ
		Ž֤߰ϡ pos ơϡWEVENT.s.time Ƥ˵ҤƤޤäˡWEVENT.s.time ξϡŽ׵ȯԤ application(ư/ʣ̸Τ)ꤵƤɬפޤ
		ޤŽߤƤ⡢ưǤäǤ⡢ư/ʣ̸ǤƤʤ褦ˤˤϡwevt.s.pos = (PNT){0x8000, 0x8000} Ȥ뤳ȤȤʤäƤޤͤꤷƤ⡢ºݤ˸ƤΤϰư/ʣ̸¦ǤΤǡư/ʣ̸αбƤɬפޤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
		׵Ƥ顢application ϼƤƤɤȥ졼ФȽǤ򤷤ޤºݤŽ߼ΤϤ׵˱ƤԤȤνȤʤäƤޤ(׵ȯԤ¦(ư/ʣ̸)ϡԤξ֤äƤꡢʤ٤ߤ䤫ʤϤʤޤäˡĹֱʤޤޤξǤȡtimeont ȯŽߤ˼ԤȽǤ뤳Ȥޤ)
		ؿ֤ͤȤơW_ACK ȤСŽ׵줿Ȥޤ
		δؿꤷʤäϡ W_NAK ֤application ȤƤŽ׵ʤΤȤǤޤ
	11. 
		W rspfn(W ix, W cmd)
		ϡ餫αݤ˸ƤФΤǤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
		ؿ֤ͤ 0 ʳˤȡevent loop λޤ
	12. 
		void scrlfn(W ix, W type, W diff)
		window  scroll bar Фȯ˸ƤФΤǤ
		äˡ application Τ褦 scroll bar  application ξϡδؿˤäơscroll bar ФƤꡢscroll 򤹤褦ˤʤФʤޤ
		ޤscroll bar Ф PD ʳˤ⡢wheel mouse  wheel βž䡢key Ϥˤ page ڤؤ⡢scroll event ȤƤδؿ¹Ԥ褦ˤʤäƤޤ
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ
	13. ǥХ
		void devfn(TC* devname)
		event type  EV_DEVICE ξ˸ƤФΤǤŪˤϡǥ³Ԥä礬ޤ
		device ȼäơapplication ȤƲ餫üʽɬפȤˡδؿѤΤǤ
	14. ׵ᥤ٥
		void vobjfn(W ix)
		window ˲ȤˡβȤФƲ餫λݤȯ˸ƤФؿǤ
		Τᡢwindow ǲȤ갷 application ξ硢Ƥ٤ؿǤ(ʤƤ⡢library ¦ǽ򤹤⤢ޤξ硢ȤɽԤʤʤʤɤ褿ޤ)
		 ix ϡɥ쥳ɤֹ̣ޤ¨ʣ window 򳫤Ƥϡɤ window ФƤ׵ʤΤ ix ˤäɽƤ뤳Ȥ̣ޤ

 application ɬפƤϡƴؿ pointer ꤹ褦ˤƤޤŪˤϰʲΤΤȤƤޤ

	2. ɥ
	4. ˥塼
	5. ɽ
	6. Ѳ
	7. Ͻ
	8. ܥץ쥹
	9. λ
	12. 

դˡɬפʤΤ NULL ꤷƤޤ뤳Ȥˤꡢlibrary ɬפ event Ƥ館褦ˤʤޤޤäɬפ event ˤĤƤϡlibrary ˰Ǥ⤹äȤޤ application Ƕ̤μԤƤ뤳ȤȤʤޤΤǡ˾ޤˤʤȸǤ礦

ʤɥ쥳ɤȡɥ٥ȴؿơ֥ˤĤƤϡܤϡ[Ķ(B-right/V)ͽ][3 饤֥][2 ץꥱ饤֥][2.3 ɥ٥][evt_loop ٥ȥ롼׽]Ƥޤ

3.1.2.4. 祦ɥνȥɥ

祦ɥ MAINWIN Ȥ class Ǵ褦ˤƤޤ class  constructor ǤϥɥȤΤdatabox 褦ˤƤޤ
Ƥϡ application ȼΤΤȤƤޤ¤ΤȤƤ struct.h  WINDEF ȤΤǵҤƤޤ
ޤconstructor ǤϡƤƤ顢 RLIST rlist νԤäƤޤϺ׵ݤˡΰ٤ѤΤǤ

ɥΤ MAINWIN::open_win() ȤؿƤФ뤳Ȥˤäơ褦ˤƤޤMAINWIN  constructor ǹԤäƤ褤ΤǤapplication ˤäƤϡwindow ĤƤ application λ櫓ǤϤʤ褦ʼ򤹤⤢(ʣΥɥ򳫤ƤȤȤʤ)äˡwindow  object ʬΥƤ䤹ȽǤǤ

window 򳫤ˡ䵸ͭǡƤĤƤޤ
ƤƤϡɥɽ֤ȥɥɽ°Ǥɽ֤ϲ̾ζϰϤ򼨤ɽ°ˤĤƤϡ application ǤɽɤɽʬȤʤäƤޤ
window 򳫤顢window  scroll bar  PID Ƥޤϡscroll bar 椽ΤΤ application ǹԤʤФʤʤ٤Ǥޤwindow  scroll ɽ֤ˤˤϡwindow  scroll bar ξ֤ cchg_par() ˤä P_DRAGBREAK ꤷƤʤФʤޤ󡣤줬ꤵƤʤ硢ɽȤϤʤޤ(jump scroll Ȥʤޤwindow  scroll bar Ȥϸºݤˤ VL_PARTS(ܥ塼ѡ) ˤ᤮ʤǤ)

Ǹˡɥ쥳ɤ򤷤Ƥޤ˽Ҥ٤ޤ evt_loop()  window ΤɬפʤΤǤΤǡevt_loop()(evt_proc()) Ѥ application ǤɬꤷʤФʤޤ

3.1.2.5. ˥塼

˥塼 MAINMENU Ȥ class ǴƤޤ class  menu ιܤ˱¹Դؿȡmenu ɬפʴؿȤ¸ߤƤޤ
äˡԤμ¹Դؿ libapp  selmenu() ѤΤǤꡢؿ table ȤϤɬפΤ static Ƥޤ

 class  constructor ǡmenu ¹Դؿ table ꤵ褦ˤƤޤ
äˡδؿ table ⡢ǽ 3 ˤĤƤϡʲƤ˸ꤵƤޤ

	[0] : [] ƹܤбؿ
	[1] : [ʪ] ƹܤбؿ
	[2] : [¹] ƹܤбؿ

줾졢бɬפʤˤϡǤƤ NULL ˤޤ( application Ǥ window ˲Ȥ֤ʤᡢ[0]  [2]  NULL ˤƤޤ)
³ǤˤĤƤϡapplication ǤդΤΤȤʤäƤޤ databox ֤¨ޤ(databox ǤλˤĤƤϸҤޤ)
ʤܤȤ¸ߤƤˤ⤫餺NULL ꤹưޤΤ(㳰ȿȯꤷޤ)ɬꤷʤФʤޤ

menu Ͽ libapp  openmenu() ѤƤޤmenu Ͽ˼ԤСexception ꤲobject ߤޤ( exception  ̤ GUIOPE 餵˾̤ IMGVIEW_EXREQ ãλ error panel  user ΤIWGVIEW_EXREQ ϰϤȴ MAIN()  try - catch ã褦ˤƤޤ)

3.2. event loop μ

event loop  libapp  evt_loop() Ǽ¹Ԥ褦ˤƤޤ
ΤᡢŪ event ν library ˰Ǥ뤳ȤǤޤ˾ܺ٤ʽ application ¸νϡlibrary ƤӽФ褦ˤʤäƤޤ
λˤĤƤϡ evt_loop() Ф̤Ǥ

 application Ǥϡɥ()ȡݥ󥿤ξ֤ꤷ褦Ȥޤϡɥ application ǤɬפʽǤꡢɥκΰ PD ϡapplication Ǿ֤ꤷʤФʤޤ(ꤷƤʤȡPD  PS_SELECT() ξ֤ȤʤäƤʤȤޤ)

ޤparts ϡparts 򤷤ʤФʤޤ(TB_PARTS ʤ caret ǤȤǤʤ)
ˡwindow  parts ʳɽƤƤɬפʤ(ʸԽǸ caret ǤɬפǤ¾¿ application ǤȤǤɬפˤʤޤ)
 application Ǥ parts  caret Ȥ⤢ޤ󤬡ΰ̲ΰ٤˳ƽԤ褦˵ҤƤޤ(ä parts  evt_idle() Ǽ¹Ԥ褦ˤƤޤwindow ¾ϼ祦ɥ˲Ƥޤºݤˤϲ⤢ޤ)

ʤʣμ祦ɥ application ξ硢ǼƤɤ window ФΤǤΤϡlibarary ãޤ
Τᡢäˤ application ¦ active Ǥ window Ƚꤹɬפޤ

Ѳ(evt_chgsts())Ǥص parts κɽȯԤ褦ˤƤޤ application Ǥ parts ޤΤạ̵̇̄ǤɽȯԤͳ˽Ҥ٤̤Ǥ

ޤλ׵(evt_finish())Ǥϡ뤳ȤˤƤޤϡ application Ǥϼ¿ȤԽɬפʤǤ

¾ event ˤĤƤϡMAINWIN ˤΤޤ޲뤫MAINMENU ˲뤫Ƥޤ

3.2.1. window event ν

window event Ȥ MAINWIN ˲ƤΤϰʲΤΤȤƤޤ

	1. ɥ()(evt_idle())
	2. ɽ(evt_disp())
	3. Ͻ(evt_key())
	4. ܥץ쥹(evt_press())
	5. (evt_scroll())

[1.]  [4.] ˤĤƤϡparts ʤᡢºݤˤϲ⤷ޤ
[3.] ˤĤƤϡɽ scroll ˴Ϣ key 褦ˤƤޤޤ key ȡMAINWIN::scroll_fn()  scroll event ǤηȤưϤ褦ˤƤޤ

[2.] Ǥmode ξϽȤƽޤȤΥץưξ硢ɽƤɤ߹ߤޤǹԤƤޤǤǤ褦䤯ƤӽФ褦ˤƤޤ(ɥ˳褦ˤƤʤȡapplication ¹ԤƤΤɤܤˤ褯狼ʤʤ뤿ᡢޤɤ߹ߤٱ䤵Ƥޤ)ɤ߹Ȥϡºݤɽ scroll bar ԤäƤޤ
դˡmode ʾͤξϺ׵ˤʤ뤿ᡢ׵νʬ򤷤ޤäˡwindow  size ѤäȡǤʤȤǽ櫓Ƥޤϡ application Ǥ size ѹκݤˡϸꤷƤǤ
̤˺򤹤ϡñ wsta_dsp() - wend_dsp() ȯԤ褦ˤƤޤ API ˤäƺϰϤƤ redisp() ϤԤ褦ˤƤޤ
׵ˡ䵸ͭǡȿǤ򤷤Ƥޤϡwindow ֤ѤäꡢѤäꡢ̥⡼ɤˤʤäȤä硢ɬ׵ηã١ǹԤ褦ˤƤޤ

Ǹ [5.] Ǥscroll ˡˤäơäư򤹤褦ˤƤޤä smooth scroll ξϡȰǤ褦ʲ®٤Ĥ褦ˤʤäƤޤ
scroll ξ硢scroll bar μ¹ԤΤ줫(VL_PARTS Τ)ˤä̤ͤ͡ѲΤʤΤǤ libapp  chk_scroll() ˤäƼ褦ˤƤޤ
scroll ¹Ԥˡºݤ window ˤη̤ȿǤʤФʤޤ󤬡ˤ wscr_wnd() ȯԤꤷޤ
 application Ǥ̵̤ʽʤ٤ˡüʤȤ򤷤Ƥޤ̤ wscr_wnd() ˤäơɽ scroll ޤ

ʤwindow  scroll bar  VL_PARTS ȤƤμ¹ԤǤ library ¦ǹԤ褦ˤʤäƤޤ library ѤƤʤϡ̤ VL_PARTS Ʊͤ cact_par() ˤäơVL_PARTS ȤƼ¹Ԥɬפꡢޤη̤ȤƤ scroll ̤䡢ɽ scroll ʤɤȼ˼ɬפޤ

3.2.2. menu ν

libapp Ǥ menu Ǥޤ˰ʲʼƧߤޤ

	1. menu Ͽ
		openmenu() ƤӽФޤ
		ǡmenu ιܤ databox Ϥޤλdatabox λֹϤȤȤʤޤ
		ؿ֤ͤ menu ID Ǥ
	2. menu 򳫤
		menu 򳫤ľ(menu ¹Ԥľ)ˡܤΥ󥸥ͭǽ򤷤ޤ
		 application Ǥ MAINMENU::exec() ǡMAINMENU::set_indi()  MAINMENU::set_enable() ȤؿƤӽФƤޤ餬 menu 򳫤ľιܤξ֤ˤʤޤ
	3. menu 򳫤
		selmenu() ƤӽФޤmenu 򳫤䡢ޥˤ short cut key μ¹Ԥ⤳δؿǹԤޤ
		ʤޥäƤܤǽƤ硢menu ϼ¹Ԥޤ(ιܤ򤵤줿Ȥˤʤޤ)Τᡢ˹ܤͭǽ򤷤Ƥ櫓Ǥ
	4. ܤμ¹
		 selmenu() ƤӽФ롢ƹܤμ¹Դؿˤʤޤ
	5. menu Ѵ
		ؤɤξ硢application νλλѴޤѴ closemenu() ƤӽФޤ
		 application ǤϡMAINMENU  destructor  closemenu() ƤӽФƤޤ

ʤ application ƳƤǤϤޤmenu Ƥѹ [2.]  menu 򳫤˹Ԥˤʤޤ
ϡchgmitem() ˤäѹ뤳ȤǤ褦ˤʤäƤޤδؿϿƹܤֹǡܤ menu ʸ([BTRON3ͽ][2 OS][3 ][3.2 ˥塼ޥ͡][3.2.1 ˥塼ޥ͡εǽ][3.2.1.4 ɸ˥塼Υǡ¤]줿񼰤Ǥ(70 ˽㤬󼨤Ƥޤ))Ȥʤޤ

3.2.2.1. databox 

libapp ǥᥤ˥塼Ѥ硢databox  menu Ƥ򵭽ҤޤˤϷޤä񼰤ޤ

ޤdatabox λ table Ǥ menu  table Ƭؤ褦ˤޤ application ǸС

	MENU+0	menu_main

ȤƤޤmenu_main  mainmenu  table ؤƤޤ
 table ǤϰʲΤ褦˵ҤƤޤ

.BASE = 0L				-- L(long) ˤƤ
.menu_main:	mctab			-- Ѵ table
					-- ƹܤֹ桦ѥ᡼бդ
		0			-- menu ɽ°
					-- ʤ 0 Ϳ
		item_0			-- [λ] ƹ
		item_1			-- [ɽ] ƹ
		item_2			-- [Խ] ƹ
		item_3			-- [Ψ] ƹ
		MN_WINDOW		-- [ɥ] ˥塼(ü)
		MN_TOOL			-- [ʪ] ˥塼(ü)
		0			-- ü

ޤǽѴ table Ǥϳƥ˥塼ιܤֹ(˥塼μֹ)ȥѥ᡼(˥塼Ǥվ)Ȥбդ򤹤٤ΤΤǤ libapp εǽѤΤɬܤǤ
 menu ɽ°Ǥ MENUDISP ¤ΤбƤؤʬǤ(libapp  menu Ͽݤˡmcre_men() 軰Ϥޤ)ä˻꤬ʤ 0 ꤷޤ
³ƤƿƹܤˤʤޤĤޤꡢƤƥ˥塼ɽΤȤʤޤapplication ꤹܤϡιܤؤ offset 򵭽ҤƤΤǤ(ü) ǤäƤʬ˴ؤƤϡιܤбƤޤ󡣤ξܤƤϸޤlibapp λ˱ǤդƤꤹܤȤȤˤʤޤ
ʤüܤϰʲΤΤޤ

	MN_WINDOW
		[ɥ] ˥塼бƤꤷޤ
	MN_TOOL
		[ʪ] ˥塼бƤꤷޤ
	MN_EXEC
		򤵤Ƥ벾Ȥ [¹] ˥塼бƤꤷޤ
	MN_VOBJ
		򤵤Ƥ벾Ȥ [] ˥塼бƤꤷޤ
	MN_FILE
		򤵤Ƥ벾Ȥ [¿] ˥塼бƤꤷޤ
	MN_DISK
		򤵤Ƥ벾Ȥ [ǥ] ˥塼бƤꤷޤ

 stddef.d ǹԤƤޤ̤ databox 򵭽ҤƤݤϡǽ stddef.d  include Ƥޤ

application Ǥդꤹ( application ǸСitem_0  item_3 )Ǥ[BTRON3ͽ][2 OS][3 ][3.2 ˥塼ޥ͡][3.2.1 ˥塼ޥ͡εǽ][3.2.1.4 ɸ˥塼Υǡ¤]Ƥ񼰤ƱǤ
Ȥơitem_1 Ƥ夲ޤ

.BASE = 0H						-- H(half) ˤޤ
.item_1:	MC_STR			"ɽ"		-- ƹܤ [ɽ] Ǥ
		MC_INDKEY1	""	"ɽ"	-- [ɽ] Ȥҹܤǡ󥸥ĤޥȤ L Ϳޤ
		MC_STR			"ɽ"	-- [ɽ] ȤҹܤǤ
		0					-- ü

°ȤƤȤ֤ǵҤƤȤˤʤޤ
ޤƹܤ°ˤĤƤ⡢Ĥͤ stddef.d ƤޤΤǡѤƵҤƤޤͽˤͤľܵҤƤ⹽ޤ

Ѵ table Ǥ( table κǽꤷƤλǤ) application ǤϰʲΤ褦˵ҤƤޤ

.BASE = 0L				-- L(long) ˤޤ
--		ֹ		ѥ᡼
.mctab:		0x0001	0	0	-- [λ]
		0x0101	1	0	-- [ɽ]-[ɽ]
		0x0102	2	0	--       -[ɽ]
		0x0201	3	0	-- [Խ]-[ȥ졼ʣ]
		0x0301	4	1	-- [Ψ]-[ɸ]
		0x0302	4	2	--       -[]
		0x0303	4	3	--       -[̾]
		0			-- ü

ƹܤΤߡ뤤ϻҹ˳ƤƤޤ줾졢ʲΰ̣ޤ

	ֹ
		[BTRON3ͽ][2 OS][3 ][3.2 ˥塼ޥ͡][3.2.1 ˥塼ޥ͡εǽ][3.2.1.4 ɸ˥塼Υǡ¤][˥塼Τι¤]ǵꤷƤ򤷤Ƥޤ
		ʤ 8 bitǿƹֹ桢 8 bit ǻҹֹ򼨤ޤ(BASE  0L ȤƤ뤿ᡢΤˤ 32bit ͤɽƤΤǤμֹˤĤƤϡH ϰϤͤѤޤΤᡢ32bit Ǥξ 16 bit ʬ̵뤵졢 16 bit ʬξ 8 bit Ȳ 8 bit ̣ͤĤȤȤʤޤ)
		library Ǥ API ƤӽФ menu 򤹤褦˼Ƥޤ򤵤줿ܤֹȡֹȤ٤ơפΤºݤбƤȤƲᤵޤ
		ֹϽʣäƤϤޤ
	ֹ
		ϡlibapp ǳƹܤ̤ΤѤޤֹ椬ƱǤ硢ƱιܤȤƽޤɬƱƹܤ°ƤʤФʤޤ
		ޤֹϳƹܤб¹ԴؿθƤӽФˤľܴͿΤǤ
	ѥ᡼
		ƹǤ롢ǤդƤǤ
		ѥ᡼οͤϡƹܤб˥塼μ¹ԴؿΰϤޤΤǡδؿǻȤ䤹Ƥˤޤ
		ޤƱֹä˳ƹܤ̤뤿ˡlibapp Ȥ⤢ޤ
		 application Ǥϡ[Ψ] Ȥƹܤ°ƤƱֹ椬ͿƤޤѥ᡼㤨뤳Ȥˤꡢ줾̤뤳ȤǤ褦ˤƤޤ

3.2.2.2. menu ιܤξ֤(󥸥/ܤǽ)

libapp  menu ιܤξ֤ꤹ硢ʲĤˡޤ

	1. 󥸥
		ϡdatabox ꤷ menu ֹꤷơ򤷤ޤ
		ֹʣιܤƱΤꤵƤ礬ޤΤǡɤιܤ̤Τˡ databox ꤷѥ᡼ѤƼ̤ޤ
		ˡǤ indmenu() ȤؿѤޤ
	2. ͭǽ
		ˡǤֹ bit ֹȤơmask ηͭǽꤷޤ
		ֹ 0  0 bitֹ 1   1 bit Ȥʤꡢֹ 31   31 bit ȤʤޤΤᡢ33ʾֹϼ갷ȤǤޤ
		ˡǤ inactmenu() ȤؿѤޤ

 application Ǥϡ[ɽ]-[ɽ] Τߤ󥸥ޤΤǡιܤΤߤ indmenu() ǹԤäƤޤ
ФͭǽǤinactmenu() Ȥˡȡmchg_atr() Ȥ API ȤˡȡĤˡѤƤޤ
inactmenu() ǤֹбΤͭǽꤹ뤳ȤǤޤʣλҹܤƱֹäнǤޤ󡣤Τᡢֹܺ٤ [ֹ] 򤹤뤳ȤȤƤޤֹΤƱǤ

3.2.2.3. menu μ¹

menu μ¹Ԥ selmenu() ǹԤޤδؿǤϡmenu ľ databox ꤷĤüܤԤޤ
 application ǸС[ɥ]˥塼  [ʪ]˥塼 ˤʤޤιܤ library ¦ OS 餳ɽƤ¨ʸưŪԤޤޤ application ǤϻѤƤޤ󤬡[][¿][ǥ][¹]γƥ˥塼 databox ǻꤹüܤǤꡢ library ¦Ԥޤ
äˡselmenu() ǲ ID ꤷޤλ˽äơ[ɥ]  [ʪ] Ƽüܤ򤵤Ƥ벾Ȥ˽äƤԤȤȤʤޤ

menu ιܤ򤹤ȡdatabox ֹꤷƤޤֹ selmenu() Ϥδؿ table ֹˤʤޤΤǡֹ˱ֹιܤ򤵤뤳Ȥˤʤޤ
ޤ˽Ҥ٤ޤä 0 - 2  3 ιܤˤĤƤϡlibrary ԤüܤбؿȤʤäƤޤ
ǤǤ 4 ʹߤ application ꤹܤбΤȤʤäƤޤ(ֹǤ 0 ؿ table  4 б褦ˤʤäƤޤ)

menu 򤹤ȡιܤμ¹Դؿΰ databox ǻꤷ ѥ᡼ Ϥޤ
ֹ椬ƱξϡƱ¹ԴؿƤФޤκݤ˥ѥ᡼㤨ƤСɤλҹܤˤΤ̤Ǥ褦Ǥޤ
 application ǸС[Ψ] Ȥƹܤγƻҹ([ɸ][][̾])ƱֹꤷƤ뤿ᡢƤФؿ MAINMENU::mn_zfact() ˤʤޤѥ᡼㤨Ƥ뤿ᤳδؿΰưѤ褦ˤƤޤ

libapp üܤ [ʪ][¹][] ˤĤƤϡapplication ǤưʤФʤޤ󤬡 application Ǥ [ʪ] ΤߤƤޤ(ȤĤϲȤɬפʤΤǤ application ǤϲȤʤᡢƤޤ)
[ʪ] 򤹤ȡؿΰˤϾʪ˥塼ֹ椬Ϳޤ̤Ϥֹ oexe_apg() Ϳʪμ¹Ԥ򤷤ޤ
ʤ¾ü([¿][ǥ][ɥ])ˤĤƤä application ưɬפϤޤ

3.3. ɤ߹

ɤ߹ߤ libimg ѤƤޤΤᡢlibimg ɤ߹ΤߤбǤ뤳Ȥˤʤޤ
βɤ߹ߤϡIMGOPE Ȥ class ǹԤ褦ˤƤޤ
 class ŪϰʲΤΤˤʤäƤޤ

	1. ɤ߹
		libimg Ȥäơɤ߹ߤԤޤ
	2. ɽƤ
		ꤵ줿ΰ衦Ψ˱ɽ(BMP ¤Τ)ޤ
	3. ɽ
		ꤵ줿ĶФ[2.] ɽƤºݤ褷ޤ

ޤ application Ǥϡ class  object ¸ߤƤ֤ϡ¿Ȥɤ߹ memory ¸ߤƤꡢɽʤɤǽǤ褦ˤƤޤ

ɽƤ䡢ɽΤϡɬפ˱ơMAINWIN  OPNDSP  IMGVIEW_TADREQ ƤӽФ褦ˤʤäƤޤ
ɽǤϡgcop_bmp() ԤäƤǤޤǤ⡢BMP ¤ΤФơĤɬפʾꤷơgcop_bmp() ǥĶ(ºݤ˲̤ˤɽ줺ˡmemory ŸĶbuffer 䲾 VRAM Ȼ褦ʤΤǤ)ФơԤäƤޤ

3.3.1. libimg α

libimg  BTRON ɸǤɤ߹ߤ򤳤ȤǤ褦ˤʤäƤޤ
ޤɤ߹̤ DP(ǥץ쥤ץߥƥ) ǵꤵƤ(BMP ¤Τη)Ǽ뤳ȤǤưפ˲ɤ߹ߤǤ褦ˤʤäƤޤ
ˡ application ǤϻѤƤޤ󤬡libimg ǤϽ񤭹ߤԤȤǤBMP ¤Τηβ򡢳Ƽ¾ηѴơ¿Ȥ¸뤳ȤǤ褦ˤʤäƤޤ
(Τˤϡlibimg  jpeg  png  DIB β BMP Ѵꡢդ BMP ΤΤ jpeg  png  DIB Ѵ뤿ΤΤǤΤᡢѴѴϼ¿ȤǤɬפϤޤ(memory ƤǤ⹽ޤ))

 application Ǥϡlibimg ɤ߹(jpeg  png  DIB  BMP Ѵ뵡ǽ)ΤߤѤƤޤΤǡʬˤĤ򤷤ޤ

ޤɤ߹ߤԤˤϡɤ߹̤¸ʤФʤޤ󤬡϶ BMP ¤ΤƤǺѤߤޤι¤ΤϿƤޤƤꤹɬפϤꤻ(plane  1 ʬ baseaddr ݤɬפޤޤλ pointer  NULL ˤƤޤ)
ޤɤ߹Ƥ BMP ѴݡɤοȤΤ(λ)ȸäȤꤷʤФʤޤ󡣤 application Ǥϲ̤ɽ뤳ȤȤƤޤΤǡ̷˰¸Ƥˤ뤿ˡSCREEN οƤޤ

ˡ¿Ȥɤ߹ߤޤΤǡ¿Ȥ򳫤Ƥޤɤ߹оݤ memory Ǥ⹽ޤɤ߹ߤˤĤƤϡlibimg ɤ߹ߴؿƤӽФޤ application ǤդΤΤǤޤ
Τᡢ¿Ȥɤ߹ϡfile Ԥ٤ɤ߹ߴؿ libimg Ϳޤmemory ɤ߹ߤϡmemory ɤؿ libimg Ϳޤ

³ơlibimg ɬܤȤƤ򤷤ƤޤϰʲΤΤޤ

	IMG_BMP
		ѴФѴ̤ݴɤꤷޤ
		ޤѴ٤δؿ(ɤ߹ߴؿ)⤷ʤФʤޤ
		(񤭹ߤ򤹤Ѵ̤¸ؿ(񤭹ߴؿ)ɬפǤǤɤ߹ߤΤߤѤޤΤǳ䰦ޤ)
	IMG_COMPACT
		Ѵˡꤷޤ
		ѴβꡢѴΥץʤɤꤷޤΥץˤĤƤѴ˰ۤʤΤȤʤäƤޤ

򤷤ơlibimg_rea_bmp() ɤ߹ߤԤäƤޤ application Ǥ jpep / png / DIB ΤŤ줫ꤷƤʤᡢ 3 ηǤɤ߹ߤ libimg ˻ߤƤޤɤ߹ߤȤδؿ 0 ֤ޤΤǡͤǤäˤϡɤ߹ߤλ褦ˤƤޤ
ˤŤǤɤ߹ʤä exception ꤲƤޤ(constructor Ǥ exception ǤΤǡIMGOPE ˼ԤȤȤʤޤ)

libimg ƤӽФɤ߹ߴؿǤϰʲΤȤεꤵƤޤ

//
// ɤ߹ߴؿ(libimg )
//
// UB* bytes   : ɤ߹Ƥ¸衣ΰ libimg ¦ǳݤƤ
// UW  reqsize : ɤ߹٤(byte ñ)libimg ׵ᤵ
// VP  io_src  : ɤ߹ߤ˴ؤapplication Ǥ
//
// ؿ֤ͤϼºݤɤ߹̤֤
//
WERR	rea_fn(UB* bytes, UW reqsize, VP io_src)
{
	WERR	rv;

	// ... ɤ߹߽ ... //

	renurn rv;
}

 application Ǥϡɤ߹ߤ˴ؤƤϼ¿Ȥɤ߹िᡢVP io_src ˤϡ¿Ȥɤ߹ߤ˴ؤϤƤ館褦ˤƤޤ

libimg ɤ߹ߤBMP ¤ΤƤȡη̤ DP ǵꤵ줿ƤȤʤäƤޤΤǡθ DP Ǥβ(pixelmap ʤ ӥåȥޥå Τ)μ갷ΤޤŬǤޤ
ʤɤ߹̤ˤĤƤϡ application ˰ǤޤΤǡBMP.baseaddr[] ؤ plane β˺ƤϤޤ󡣤 application ǤϡIMGOPE  destructor ɤ߹Ф plane β(free() ȯ)򤹤褦ˤƤޤ

3.4. λ

 application λǤ⡢۾ǽλǤ⡢OS ¦ process νλɬΤʤФʤޤ
äˡưβȤ䵤硢βȤ䵤μ¹Ծ֤β򤷤ꡢǽ(ϼ¹Եǽ)θͭǡι򤷤ʤϤʤʤ礬ޤ
ȤΥץư䵤ΥץưξϡưβȰ䵤ξ֤ͭǡιԤޤ
ȤɽưȤ TAD ǡưǡŽߵưξϡ[׵]ư ȤΤǤꡢ׵ؤα֤ʤФʤޤ󤬡䵸ͭǡϹΤǤϤޤ
ʤcli ưʤɤΤ¾εưˡˤĤƤϡOS ؤɵưˡλƤˤϴΤΤǤϤޤΤǡλ˴ؤƤäϤޤ

ʤŤξ˱Ƥ⡢ext_prc() ˤäơǽŪ process νλΤɬפޤ

3.4.1. 䵸ͭǡν񤭹

 application Ǥϡλκݤ䵸ͭǡ򹹿ưȤνλ褦ˤƤޤ
äˡ䵸ͭǡιɬפʾϡưȤλؤ¿Ȥ F_UPDATE ʤ F_WRITE ǳoput_fsn() ˤäơƤιʤФʤޤ󡣤ʤλ䵸ͭǡĹ䵸ͭǡ˵ҤƤʤϤʤޤ(ξ硢䵸ͭǡĹ䵸ͭǡϤޤȤ struct ȤƤޤ)
ޤưȤνλ oend_prc() ˤäޤΤȤȤȤǤä硢 API ֤ͤ 1 ʾͤȤʤ뤳ȤޤλϳȤɽ򹹿褦ˡ¿Ȳȥޥ͡㤫׵ᤵ줿Ȥ̣ޤ

ʤߤˡ䵸ͭǡι FUSEN::write_fusen() ǹԤäƤޤν libapp  put_fsn_data() ȳƱǤ( oend_prc() ȯԤȤǤϰ㤤ޤ)

3.4.2. Ȥξν

ǡoend_prc() ֤ͤȤ 1 ʾξˤĤƿޤλϵưȤȤǤꡢɽƤ򹹿ɬפȤȤ̣Ƥޤ
λ֤ͤϳȤɽΰбĶ ID ȤʤäƤޤΤᡢȤɽȤơĶФľԤȤȤʤޤξ֤ϡM_DISPREQ(Ȥɽ׵)ȻƤ뤿ᡢζ̲ΰ٤ˡȤɽˤĤƤ OPNDSP Ȥ class ˤޤȤ뤳ȤȤƤޤ
ʤɽξΤˤ [׵] ǤϤʤᡢɬפϤޤ󡣤ɽƤˤĤƤ application ¦ɬʤФʤޤ
Ƥʤ硢ȤɽƤפäΤˤʤʤäꡢˤʾ֤Ȥʤ礬ޤ
ΤᡢöɽƤξ(Ȥɽ׵бƤʤξ)ˤǡɽƤ褦ˤƤޤ(Ȥɽ׵бƤʤ application Ǥ⡢Τ褦ˤƤ٤Ǥ礦)
(ʤȤɽˤĤƤϼ¿Ȳȥޥ͡㤬Ƥʬ⤢ޤΤǡ줿ɽˤʤȤʤʤȤޤ)

3.5. C++ ˤ BTRON  application γȯ

ߤγȯĶǤϡȤƤ C++ ϻѤǤޤƼ API  library ˤĤƤϡC ǵҤƤޤΤᡢexception Ф֤Ͻʬ˹֤ƤʤФʤޤ
ȤСevent loop  libapp  evt_loop() Ȥ褦ˤ application Ǥ߷פƤޤ event ؿ exception ꤲƤޤȡ evt_loop()  catch 뤳Ȥˤʤޤ
Τᡢͽ event loop νλˤʤޤΤǡʤʤ褦ˤʤФʤޤ
ޤevent loop ʳǤ⡢Ȥ menu ؿ libapp ѤƤޤǤ嵭ƱͤդʤФʤޤ

3.5.1.  source  class ΰ̣礤

 source ڤ class ϰʲΤ褦ʬवƤޤ

main.h / main.cc
	MAIN() бʬǤ
	ưˡ˴Ťơapplication  class Ƥ㤨褦ˤƤޤ
	ޤapplication μ¹Ԥɬפʺ٤νԤޤ

appl.h / appl.cc / appl_ex.cc / appl_dsp.cc / appl_tad.cc
	IMGVIEW_APPL / IMGVIEW_EXREQ / IMGVIEW_DSPREQ / IMGVIEW_TADREQ Ȥ class ФʬǤ줾졢ʲ䤬ޤ
	IMGVIEW_APPL  application  class ȤƤδ class ˤʤޤappl.cc ˼ºݤ code ¸ߤޤ
	IMGVIEW_EXREQ ϲȤΥץưб class Ǥappl_ex.cc ˼ºݤ code ¸ߤޤ
	IMGVIEW_DSPREQ ϳȤΥץưб class Ǥappl_dsp.cc ˼ºݤ code ¸ߤޤ
	IMGVIEW_TADREQ ϳȤ TAD ǡưб class Ǥappl_tad.cc ˼ºݤ code ¸ߤޤ

opndsp.h / opsdsp.cc
	OPNDSP Ȥ class ФʬǤ class ϳȤɽΰ٤ʬǤ

imgope.h / imgope.cc
	IMGOPE Ȥ class ФʬǤ class  libimg Ȥ interface ȤƤȡɽδȤʬޤ
	Ūˤϡconstructor  libimg ѤƲɤ߹ߤ򤷤ޤɤ߹̤ϤΤޤݻޤ
	ޤɽκݤˡɽ׵δؿƤӽФɽƤɽ()Ԥޤ

fusen.h / fusen.cc
	FUSEN Ȥ class ФʬǤ class 䵸ͭǡνԤ٤ʬǤ
	 class ȡ䵸ͭǡưεǽ䵤ޤ䵸ͭǡؤν񤭹ߤŪ˸ƤӽФɬפ褦ˤƤޤ(destructor ǽ񤭹ߤϤޤ󤷡destructor μݤȿޤ)
	ޤ䵸ͭǡγƤ¾ application γƴؿǼѹݤ interface ޤ(ؤɤξ硢inline ؿ褦ˤƤޤ)

guiope.h / guiope.cc
	GUIOPE Ȥ class ФʬǤ class  EVTOPE / MAINWIN / MAINMENU ȸäGUI Ϣ object ٤ʬǤ

evtope.h / evtope.cc
	EVTOPE Ȥ class ФʬǤ
	event loop  libapp  evt_loop() Ѥ١ event ؿ static 줿ΤȤʤäƤޤ

mainwin.h / mainwin.cc
	MAINWIN Ȥ class ФʬǤ class ϼ祦ɥδԤwindow event ν̤Ԥޤ

mainmenu.h / mainmenu.cc
	MAINMENU Ȥ class ФʬǤ
	menu λ񸻤δΰ٤ˡconstructor / destructor ޤ menu ؿ libapp ͳ뤿ᡢstatic Ƥޤ

savedat.h / savedat.cc
	SAVEDAT Ȥ class ФʬǤ application ǤϳȤ TAD ǡưξΤߤ˻ѤƤޤ

trayope.h / trayope.cc
	TRAYOPE Ȥ class ФʬǤ
	 application Ǥ tray ʣ̤ΤߤƤޤ

misc.h / misc.cc
	MISC Ȥ class ФʬǤ̤̾ˤ¾δؿޤȤ᤿ʬǤ
	ä˻񸻤δϤʤᡢ member ؿ static Ƥޤ

cval.h
	CVAL Ȥ namespace ФʬǤ namespace ˤΤѤΤǤ

struct.h
	Ĥ struct ԤʬǤŪˡC δؿؤΰϤ(library ؤΰϤ)ԤɬפꡢĹŪ˻ȤƤǤˡ header 褦ˤƤޤ

val.h
	ѿѤޤ
	 application Ǥ IMGVIEW_APPL  object ؤ pointer Τߤ򤷤Ƥޤ

dbox.h
	DBOX Ȥ namespace ФʬǤ namespace Ǥϡdatabox λֹ򡢳ʬ enum Ƕʬ褦ˤƤޤ

err.h
	IMGVIEWERR Ȥ namespace ФʬǤ namespace Ǥϡ application Ǥ error code ȤƹԤȤˤƤޤ

except.h
	Ƽ㳰Ԥޤ application Ǥϡʲ㳰Ƥޤ
	IMGVIEW_EXCEPT
		 application Ǥ㳰δ class
	EXCEPT_EXECMSG
		ưˡ
	EXCEPT_INITERR
		application νǤ㳰
	EXCEPT_FUSEN
		䵸ͭǡ㳰
	EXCEPT_MAINWIN
		祦ɥǤ㳰
	EXCEPT_MAINMENU
		ᥤ˥塼Ǥ㳰
	EXCEPT_IMGOPE
		ɽϤǤ㳰
	EXCEPT_OVDISP
		ȤɽǤ㳰
	EXCEPT_SAVEDAT
		¸Ǥ㳰

macro.h
	macro Ǥ application Ǥϡ䵸ͭǡνͤΤߤƤޤ

debug.h
	debug  macro ʤɤǤdebug mesage ɽѤ printf() Ф macro 򤷤Ƥޤ
	compile option  -DDEBUG Ƥʤȡdebug message Фʤ褦ˤƤޤ




4. 䵭

 application ¹Ԥȡlibimg  debug message Ϥ礬ޤ(бƤʤβʤ԰פȤäƤΤΤǤ)ϰ۾ǤϤޤ

databox ˤĤƤϡ application ɬפʬƤޤŪʽ񼰤ˤĤơĤʬ WALLCHG(ɻѹ) ƤޤΤǡ⻲ͤˤƤ([3. ƴ program ή][3.3. libapp ˤ panel ɴؿ][3.3.1. databox ε])
