Mercurial > otakunoraifu
annotate scn2k/scn2k_text.cc @ 62:3b1593186f12
fix pointers used to get strchr result
author | Thibaut GIRKA <thib@sitedethib.com> |
---|---|
date | Sat, 06 Feb 2010 17:03:47 +0100 |
parents | 36d92d21300f |
children | 4416cfac86ae |
rev | line source |
---|---|
0 | 1 /* |
2 TODO: | |
3 ÆüÉդΥé¥Ù¥ë¤¬²èÌÌÀÚ¤êÂؤ¨»þ¤Ë·ç¤±¤ë¤Î¤ò½¤Àµ | |
4 ²èÁü¸ú²Ì : ¿Í´Ö¤ÎÆþ¤ì´¹¤ï¤ê¤Ê¤É | |
5 kcursor ¤ÎÁàºî¤ò WidText ¥¯¥é¥¹¤ËǤ¤»¤ë | |
6 WidText ¥¯¥é¥¹¤Ë¤Ï¿·¤¿¤Ë°Ê²¼¤ÎÁàºî¤ò²Ã¤¨¤ë | |
7 ¡¦¥¦¥§¥¤¥È½ªÎ»¸å¡¢¥¯¥ê¥¢¤Ê¤·¤Ë¿·¤¿¤Ê¥Æ¥¥¹¥È¤òÄɲᢿ·¤¿¤Ëstart-wait¤¹¤ë | |
8 ¡¦Ê¸»ú¤ÎÉÁ²è (Start) ¤È Wait(¥«¡¼¥½¥ëɽ¼¨ÂÔ¤Á)¤ÎʬΥ¡£ | |
9 Start ¤¹¤ë¤Èʸ»ú¤òÉÁ²è³«»Ï¤¹¤ë¡£¥¯¥ê¥Ã¥¯¤ÇÁ´ÉÁ²è¡£ | |
10 Flush ¤¹¤ë¤È¥Ð¥Ã¥Õ¥¡Æâ¤Îʸ»ú¤ò¤¹¤Ù¤ÆÉÁ²è¤¹¤ë | |
11 Wait ¤¹¤ë¤ÈÁ´ÉÁ²è¸å¡¢¥¯¥ê¥Ã¥¯¤µ¤ì¤ë¤Þ¤Ç¥«¡¼¥½¥ë¤òɽ¼¨¤¹¤ë¤Þ¤ÇÂÔ¤Ä | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
12 Text ¦¤Î¾õÂ֤Ȥ·¤Æ¤Ï Wait ¤Î¤ß¤ò»ý¤Ä (PREPARE¤ËÌá¤ë¤Î¤òÂÔ¤Ä) |
0 | 13 ¤¿¤À¤·¡¢Skip ¤Î¸¢Íø¤Ï¤É¤Ã¤Á¤¬¤â¤Ä¡©¡Ê¸½¾õ¤Ï¡©¡Ë |
14 | |
15 GrpObj: NextObj ¤È GrpObj ¤òʬΥ¡£CreateObj ¤Ï¸½¾õÄ̤ꡢVisible=1 »þ¤Ë¹Ô¤¦¡£ | |
16 ¤½¤ì¤¾¤ì num=0 (screen) ¤Î»Þleaf ¤È¤·¤Æ¼ÂÁõ¡£delete»þ¤Ï¿Æ¤Îdelete¤Î¤ß¤ò | |
17 ¹Ô¤¤¡¢»Ò¤ÏGrpObj¤Î¼ÂÂΤÀ¤±¤òºï½ü¤¹¤ë | |
18 Visible ¸å¤Îhide ¤Ï¼ÂºÝ¤Ë hide ¤È¤¹¤ë | |
19 ExecReservedCmd() ¤Ï¤Ê¤¯¤»¤ë¤Ï¤º¡£Delete() ¤â¤Ê¤¯¤Ê¤ë¡£ | |
20 ¥«¥Î¥®¡§ReBlit() ¤¬¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¤»¤¤¤Ç̾Á°¥¦¥£¥ó¥É¥¦¤¬¾Ã¤¨¤¿»þ¤ÎÇطʤ¬¤Ê¤¯¤Ê¤ë | |
21 | |
22 ¤¯¤é¡§²óÁÛɽ¼¨ | |
23 SEL²èÁü¸ú²Ì | |
24 DONE: | |
25 ¤È¤â¤è¤Î¥Æ¥¥¹¥È¥¦¥£¥ó¥É¥¦¼ÂÁõ¡¢¥Ü¥¿¥ó¼ÂÁõ | |
26 shake ¤Î²èÁü¸ú²Ì | |
27 ¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Î¥Æ¥¥¹¥È¿§¤Î¼ÂÁõ | |
28 ²èÁü¸ú²Ì¤Î²þÁ± | |
29 */ | |
30 | |
31 /* | |
32 * Copyright (c) 2004-2006 Kazunori "jagarl" Ueno | |
33 * All rights reserved. | |
34 * | |
35 * Redistribution and use in source and binary forms, with or without | |
36 * modification, are permitted provided that the following conditions | |
37 * are met: | |
38 * 1. Redistributions of source code must retain the above copyright | |
39 * notice, this list of conditions and the following disclaimer. | |
40 * 2. Redistributions in binary form must reproduce the above copyright | |
41 * notice, this list of conditions and the following disclaimer in the | |
42 * documentation and/or other materials provided with the distribution. | |
43 * 3. The name of the author may not be used to endorse or promote products | |
44 * derived from this software without specific prior written permission. | |
45 * | |
46 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | |
47 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | |
48 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | |
49 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | |
50 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
51 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
52 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
53 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
54 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
55 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
56 */ | |
57 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
58 #include "scn2k_text.h" |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
59 |
52 | 60 #include "system/file.h" |
61 #include "scn2k.h" | |
0 | 62 |
52 | 63 #include <string> |
0 | 64 using namespace std; |
65 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
66 #include "window/render.h" |
0 | 67 |
68 /**************************************************************:: | |
69 ** | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
70 ** Text(implementation) |
0 | 71 */ |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
72 Text::Text(Event::Container& _event, PicContainer& _parent) : |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
73 text(0),status(Text::NORMAL), status_saved(Text::NORMAL), status_mask(Text::NORMAL), ruby_text_flag(false), |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
74 old_time(0), text_window_number(0), text_parsing(false), skip_mode(SKIP_NO), save_selectcount(0), sel_widget(0), |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
75 backlog_widget(0), parent(_parent), event(_event), |
0 | 76 kcursor(0), sel_bg1(0), sel_bg2(0), sel_bg_rect(0,0,0,0) { |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
77 config = AyuSysConfig::GetInstance(); |
0 | 78 int i; |
79 for (i=0; i<32; i++) { | |
80 widgets[i] = 0; | |
81 } | |
82 text_stream.kanji_type = TextStream::sjis; | |
83 event.RegisterGlobalPressFunc(&PressFunc, (void*)this); | |
55 | 84 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
85 RegisterCommand(1, 33, 73, "grpOpenBg", (CmdImpl) &Text::impl_txtClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
86 RegisterCommand(1, 33, 75, "grpMulti", (CmdImpl) &Text::impl_txtClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
87 RegisterCommand(1, 33, 76, "grpOpen", (CmdImpl) &Text::impl_txtClear); |
55 | 88 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
89 RegisterCommand(1, 23, 0, "koePlay", (CmdImpl) &Text::impl_logKoe); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
90 RegisterCommand(1, 23, 8, "koeDoPlay", (CmdImpl) &Text::impl_logKoe); |
55 | 91 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
92 RegisterCommand(0, 3, 151, "msgHide", (CmdImpl) &Text::impl_txtClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
93 RegisterCommand(0, 3, 17, "pause", (CmdImpl) &Text::impl_pause); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
94 RegisterCommand(0, 3, 3, "par", (CmdImpl) &Text::impl_br); //FIXME |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
95 RegisterCommand(0, 3, 201, "br", (CmdImpl) &Text::impl_br); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
96 RegisterCommand(0, 3, 1000, "FaceOpen", (CmdImpl) &Text::impl_FaceOpen); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
97 RegisterCommand(0, 3, 1001, "FaceClear", (CmdImpl) &Text::impl_FaceClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
98 RegisterCommand(0, 3, 120, "__doruby", (CmdImpl) &Text::impl_doRuby); //FIXME: I don't know how it works |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
99 RegisterCommand(0, 3, 102, "TextWindow", (CmdImpl) &Text::impl_TextWindow); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
100 RegisterCommand(0, 3, 103, "FastText", NULL);//FIXME: (CmdImpl) &Text::impl_FastText); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
101 RegisterCommand(0, 3, 104, "NormalText", NULL); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
102 RegisterCommand(0, 3, 152, "msgClear", (CmdImpl) &Text::impl_msgClear); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
103 |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
104 RegisterCommand(1, 4, 2600, "DefMessageSpeed", (CmdImpl) &Text::impl_GetDefConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
105 RegisterCommand(1, 4, 2601, "DefMessageNoWait", (CmdImpl) &Text::impl_GetDefConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
106 RegisterCommand(1, 4, 2604, "DefAutoMode", (CmdImpl) &Text::impl_GetDefConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
107 RegisterCommand(1, 4, 2605, "DefAutoCharTime", (CmdImpl) &Text::impl_GetDefConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
108 RegisterCommand(1, 4, 2606, "DefAutoBaseTime", (CmdImpl) &Text::impl_GetDefConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
109 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
110 RegisterCommand(1, 4, 2323, "MessageSpeed", (CmdImpl) &Text::impl_GetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
111 RegisterCommand(1, 4, 2324, "MessageNoWait", (CmdImpl) &Text::impl_GetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
112 RegisterCommand(1, 4, 2350, "AutoMode", (CmdImpl) &Text::impl_GetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
113 RegisterCommand(1, 4, 2351, "AutoCharTime", (CmdImpl) &Text::impl_GetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
114 RegisterCommand(1, 4, 2352, "AutoBaseTime", (CmdImpl) &Text::impl_GetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
115 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
116 RegisterCommand(1, 4, 2223, "SetMessageSpeed", (CmdImpl) &Text::impl_SetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
117 RegisterCommand(1, 4, 2224, "SetMessageNoWait", (CmdImpl) &Text::impl_SetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
118 RegisterCommand(1, 4, 2250, "SetAutoMode", (CmdImpl) &Text::impl_SetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
119 RegisterCommand(1, 4, 2251, "SetAutoCharTime", (CmdImpl) &Text::impl_SetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
120 RegisterCommand(1, 4, 2252, "SetAutoBaseTime", (CmdImpl) &Text::impl_SetConfig); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
121 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
122 RegisterCommand(1, 4, 1300, "GetName", (CmdImpl) &Text::impl_GetName); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
123 RegisterCommand(1, 4, 1301, "SetName", (CmdImpl) &Text::impl_SetName); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
124 RegisterCommand(1, 4, 1310, "GetLocalName", (CmdImpl) &Text::impl_GetLocalName); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
125 RegisterCommand(1, 4, 1311, "SetLocalName", (CmdImpl) &Text::impl_SetLocalName); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
126 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
127 RegisterCommand(0, 2, 1, "select", (CmdImpl) &Text::impl_createSelect); |
57 | 128 RegisterCommand(0, 2, 3, "select2?", (CmdImpl) &Text::impl_createSelect); //FIXME: What difference with select? |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
129 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
130 RegisterCommand(0, 4, 1000, "ShowBackground", (CmdImpl) &Text::impl_ShowBackground); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
131 RegisterCommand(0, 4, 1100, "SetSkipMode", (CmdImpl) &Text::impl_SetSkipMode); |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
132 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
133 RegisterCommand(1, 4, 2260, "SetWindowAttrR", (CmdImpl) &Text::impl_SetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
134 RegisterCommand(1, 4, 2261, "SetWindowAttrG", (CmdImpl) &Text::impl_SetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
135 RegisterCommand(1, 4, 2262, "SetWindowAttrB", (CmdImpl) &Text::impl_SetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
136 RegisterCommand(1, 4, 2263, "SetWindowAttrA", (CmdImpl) &Text::impl_SetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
137 RegisterCommand(1, 4, 2264, "SetWindowAttrF", (CmdImpl) &Text::impl_SetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
138 RegisterCommand(1, 4, 2267, "SetWindowAttr", (CmdImpl) &Text::impl_SetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
139 RegisterCommand(1, 4, 2367, "GetWindowAttr", (CmdImpl) &Text::impl_GetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
140 RegisterCommand(1, 4, 2617, "DefWindowAttr", (CmdImpl) &Text::impl_GetWindowAttr); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
141 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
142 RegisterCommand(1, 4, 100, "wait", (CmdImpl) &Text::impl_Wait); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
143 RegisterCommand(1, 4, 111, "time", (CmdImpl) &Text::impl_Wait); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
144 RegisterCommand(1, 4, 121, "timeEx", (CmdImpl) &Text::impl_Wait); |
57 | 145 RegisterCommand(1, 4, 101, "waitC", (CmdImpl) &Text::impl_Wait); |
146 RegisterCommand(1, 4, 112, "timeC", (CmdImpl) &Text::impl_Wait); | |
147 RegisterCommand(1, 4, 131, "GetClick", (CmdImpl) &Text::impl_GetClick); | |
148 | |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
149 RegisterCommand(1, 4, 364, "PauseCursor", (CmdImpl) &Text::impl_PauseCursor); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
150 RegisterCommand(1, 4, 3009, "load", (CmdImpl) &Text::impl_load); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
151 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
152 RegisterCommand(1, 4, 500, "InitFrame", (CmdImpl) &Text::impl_InitFrame); |
57 | 153 RegisterCommand(1, 4, 510, "ReadFrame", (CmdImpl) &Text::impl_ReadFrame); |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
154 RegisterCommand(1, 4, 620, "InitExFrames", (CmdImpl) &Text::impl_InitFrames); |
59 | 155 RegisterCommand(1, 4, 624, "InitExFramesDecel", (CmdImpl) &Text::impl_InitFrames); |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
156 RegisterCommand(1, 4, 630, "ReadExFrames", (CmdImpl) &Text::impl_ReadFrames); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
157 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
158 RegisterCommand(1, 4, 110, "ResetTimer", (CmdImpl) &Text::impl_ResetTimer); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
159 RegisterCommand(1, 4, 120, "ResetExTimer", (CmdImpl) &Text::impl_ResetTimer); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
160 RegisterCommand(1, 4, 114, "Timer", (CmdImpl) &Text::impl_Timer); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
161 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
162 RegisterCommand(1, 4, 800, "index_series", (CmdImpl) &Text::impl_index_series); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
163 |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
164 RegisterCommand(1, 4, 1000, "rnd", (CmdImpl) &Text::impl_rnd); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
165 RegisterCommand(1, 4, 1001, "pcnt", (CmdImpl) &Text::impl_pcnt); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
166 RegisterCommand(1, 4, 1002, "abs", (CmdImpl) &Text::impl_abs); |
59 | 167 RegisterCommand(1, 4, 1003, "power", (CmdImpl) &Text::impl_power); |
168 RegisterCommand(1, 4, 1004, "sin", (CmdImpl) &Text::impl_sin); | |
58
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
169 RegisterCommand(1, 4, 1007, "min", (CmdImpl) &Text::impl_min); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
170 RegisterCommand(1, 4, 1008, "max", (CmdImpl) &Text::impl_max); |
0aaa5bb3dde5
Moved all opcodes from scn2k_text.cc to scn2k_textimpl.cc
Thibaut GIRKA <thib@sitedethib.com>
parents:
57
diff
changeset
|
171 RegisterCommand(1, 4, 1009, "constrain", (CmdImpl) &Text::impl_constrain); |
0 | 172 } |
173 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
174 Text::~Text() { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
175 if (sel_widget != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
176 delete sel_widget; |
0 | 177 int i; |
178 for (i=0; i<32; i++) { | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
179 if (widgets[i] != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
180 delete widgets[i]; |
0 | 181 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
182 if (backlog_widget != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
183 delete backlog_widget; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
184 if (sel_bg1 != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
185 parent.Root().DeleteSurface(sel_bg1); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
186 if (sel_bg2 != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
187 parent.Root().DeleteSurface(sel_bg2); |
0 | 188 event.DeleteGlobalPressFunc(&PressFunc, (void*)this); |
189 } | |
190 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
191 bool Text::PressFunc(int x, int y, void* pointer) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
192 Text* t = (Text*)pointer; |
0 | 193 if (t->status == WAIT_CLICK) { |
194 t->status = WAIT_ABORT; | |
195 } else if (t->status == WAIT_CLICK_MOUSEPOS) { | |
196 t->status = WAIT_CLICK_MOUSEPOSEND_L; | |
197 } else if (t->status_mask & CLEARSCR_WAIT_MASK) { | |
198 t->status_mask = Status(t->status_mask & (~CLEARSCR_WAIT_MASK)); | |
199 if (t->text) t->text->show(); | |
200 if (t->kcursor) { | |
201 if (t->status == WAIT_TEXT) t->kcursor->show(); | |
202 } | |
203 if (t->sel_widget) t->sel_widget->show(); | |
204 if (t->backlog_widget) t->backlog_widget->show(); | |
205 } else if (t->status_mask & BACKLOG_WAIT_MASK) { | |
206 t->status_mask = Status(t->status_mask | BACKLOG_MASK_KOE); | |
207 } else if ( (t->skip_mode & SKIP_TEXT) && (!(t->skip_mode & SKIP_IN_MENU)) ) { | |
208 if (t->status == WAIT_SELECT_INBOX) ; | |
209 else if (t->status == WAIT_SELECT_OUTBOX) ; | |
210 else if (t->status == WAIT_SELECT_VALUE) ; | |
211 else t->status_mask = Status(t->status_mask | SKIPEND_MASK); | |
212 } | |
213 return true; // event not deleted | |
214 } | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
215 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
216 void Text::PressFuncButton(void* pointer, WidButton* from) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
217 Text* t = (Text*)pointer; |
0 | 218 if (t->status != WAIT_SELECT_INBOX && t->status != WAIT_SELECT_OUTBOX) return; |
219 vector<WidTextButton*>::iterator it; | |
220 int sel = 0; | |
221 for (it=t->selects.begin(); it != t->selects.end(); it++, sel++) { | |
222 if (from == *it) break; | |
223 } | |
224 if (it == t->selects.end()) { | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
225 fprintf(stderr,"Text::PressFuncButton: Cannot find select widget\n"); |
0 | 226 return; |
227 } | |
228 t->status = Status(WAIT_SELECT_VALUE + sel); | |
229 } | |
230 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
231 void Text::SetSkipMode(SkipMode _mode) { |
0 | 232 if ( (skip_mode & SKIP_IN_MENU) && (_mode & SKIP_IN_MENU) == 0) { |
233 if (status_mask & BACKLOG_WAIT_MASK) { // backlog mode ¤«¤éÉüµ¢ | |
234 status_mask = Status(status_mask & (~(BACKLOG_MASK|BACKLOG_MASK_FWD|BACKLOG_MASK_KOE|BACKLOG_WAIT_MASK))); | |
235 text->wid->Clear(); | |
52 | 236 if (status == WAIT_TEXT && text != NULL) { |
0 | 237 text->StartText(text_stream); |
238 text->ShowFace(backlog_item.face.c_str()); | |
239 text->wid->Flush(); | |
240 if (kcursor) kcursor->show(); | |
241 } | |
242 drawn_backlog_item.Clear(); | |
243 } | |
244 if (text) text->wid->activate(); | |
245 if (sel_widget) { | |
246 sel_widget->show(); | |
247 if (kcursor) kcursor->hide(); | |
248 } | |
249 if (backlog_widget) backlog_widget->show(); | |
250 if (status_mask & STATSAVE_MASK) { | |
251 status_mask = Status(status_mask & (~STATSAVE_MASK)); | |
252 status = status_saved; | |
253 } | |
254 } else if ( (skip_mode & SKIP_IN_MENU) == 0 && (_mode & SKIP_IN_MENU) ) { | |
255 if (text) text->wid->deactivate(); | |
256 if (sel_widget) sel_widget->hide(); | |
257 if (backlog_widget) backlog_widget->hide(); | |
258 } | |
259 skip_mode = _mode; | |
260 } | |
261 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
262 void Text::InitWindow(void) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
263 int i; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
264 int w; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
265 std::string str; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
266 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
267 for (w=0; w<32; w++) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
268 widgets[w] = new TextWindow(parent, event, w, (void*)this); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
269 if (widgets[w]->wid == 0) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
270 delete widgets[w]; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
271 widgets[w] = NULL; |
0 | 272 } |
273 } | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
274 SetCursor(0); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
275 for (i=0; i<26; i++) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
276 char buf[1024]; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
277 sprintf(buf, "#NAME.%c", i+'A'); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
278 const char* s = config->GetParaStr(buf); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
279 if (s != NULL) replace_name[i] = s; |
0 | 280 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
281 // replace_name2 : ½é´üÀßÄê |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
282 // ½í¡¢½©À¸¡¢½í (CLANNAD) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
283 char name_nagisa[3] = {'\x8f', '\x8d', '\0'}; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
284 char name_akio[5] = {'\x8f', '\x48', '\x90', '\xb6', '\0'}; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
285 replace_name2[0] = name_nagisa; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
286 replace_name2[1] = name_akio; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
287 replace_name2[2] = name_nagisa; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
288 text = NULL; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
289 /* ¥Æ¥¥¹¥È®ÅÙ¤ÎÀßÄê */ |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
290 int speed, mod, wait, auto_mod; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
291 config->GetParam("#INIT_MESSAGE_SPEED", 1, &speed); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
292 config->GetParam("#INIT_MESSAGE_SPEED_MOD", 1, &mod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
293 config->GetParam("#MESSAGE_KEY_WAIT_USE", 1, &auto_mod); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
294 config->GetParam("#MESSAGE_KEY_WAIT_TIME", 1, &wait); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
295 if (mod) speed = -1; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
296 if (!auto_mod) wait = -1; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
297 SetTextSpeed(speed); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
298 SetTextWait(wait); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
299 } |
52 | 300 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
301 void Text::Save(string& str, bool rollback_save) { |
0 | 302 char buf[1024]; |
303 str = "\n"; | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
304 str += "[Text Window]\n"; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
305 sprintf(buf, "TextWindow=%d\n",text_window_number); |
0 | 306 str += buf; |
307 if (rollback_save) { | |
308 ++save_selectcount; | |
309 BacklogItem save_item; | |
310 save_item.SetSavepos(save_selectcount); | |
311 backlog.push_back(save_item); | |
312 } | |
313 sprintf(buf, "SaveSelectCount=%d\n",save_selectcount); | |
314 | |
315 str += buf; | |
316 int i; | |
317 for (i=0; i<26; i++) { | |
318 if (replace_name2[i].empty()) continue; | |
319 sprintf(buf, "RName.%c=%s\n",i+'A',replace_name2[i].c_str()); | |
320 str += buf; | |
321 } | |
322 int cnt = 0; | |
323 vector<BacklogItem>::iterator it; | |
324 it = backlog.begin(); | |
325 if (!rollback_save) { | |
326 SaveFaceHash face_log; | |
327 do { | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
328 int cur_scn = -1; int cur_pos = -1; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
329 sprintf(buf, "Backlog.%d=",++cnt); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
330 str += buf; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
331 for (; it != backlog.end(); it++) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
332 buf[0] = 0; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
333 int buflen = 0; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
334 if (it->scn == -1) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
335 continue; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
336 if (it->pos == -1 && it->scn != 0) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
337 continue; |
0 | 338 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
339 buf[buflen++] = ';'; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
340 if (it->scn == 0 && it->pos == -1) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
341 buflen += snprintf(buf+buflen, 1000-buflen, "\"%s\".", it->text.Save().c_str()); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
342 else { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
343 if (cur_scn != -1 && cur_scn != it->scn) break; // scn change |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
344 if (cur_pos != -1 && cur_pos/5000 != it->pos/5000) break; // pos exceeded |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
345 if (!it->text.container.empty()) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
346 buflen += snprintf(buf+buflen, 1000-buflen, "\"%s\"", it->text.Save().c_str()); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
347 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
348 if (cur_scn == -1) { // scene change |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
349 buflen += snprintf(buf+buflen, 1000-buflen, ":%d:%d",it->scn,it->pos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
350 cur_scn = it->scn; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
351 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
352 else |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
353 buflen += snprintf(buf+buflen, 1000-buflen, "%d",it->pos); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
354 cur_pos = it->pos; |
0 | 355 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
356 if (it->koe != -1) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
357 buflen += snprintf(buf+buflen, 1000-buflen, ",%d",it->koe); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
358 if (!it->face.empty()) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
359 if (it->koe == -1) buf[buflen++] = ','; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
360 int face_num = face_log.Add(it->face); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
361 if (face_num >= 0 && face_num < 20) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
362 buflen += snprintf(buf+buflen, 1000-buflen, ",%c", 'A'+face_num); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
363 else |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
364 buflen += snprintf(buf+buflen, 1000-buflen, ",\"%s\"", it->face.c_str()); |
0 | 365 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
366 buf[buflen++] = '\0'; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
367 if (buflen >= 1000) { // Ëü¤¬°ì¡¢¥Ð¥Ã¥¯¥í¥°£±¥¢¥¤¥Æ¥à¤ÎÂ礤µ¤¬ 1000byte ¤ò±Û¤¨¤ë¤È¤ |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
368 fprintf(stderr,"Fatal : Cannot save backlog crrectly; Please send bug report to the author.\n"); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
369 } else str += buf; |
0 | 370 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
371 str += "\n"; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
372 } while(it != backlog.end()); |
0 | 373 } |
374 } | |
52 | 375 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
376 void Text::Load(const char* str) { |
0 | 377 if (text) text->wid->Clear(); |
378 hide(); | |
379 text_window_number = 0; | |
380 save_selectcount = 0; | |
52 | 381 if (sel_widget != NULL) { |
0 | 382 selects.clear(); |
383 sel_backlog_pos.clear(); | |
384 delete sel_widget; | |
52 | 385 sel_widget = NULL; |
0 | 386 } |
52 | 387 if (backlog_widget != NULL) { |
0 | 388 delete backlog_widget; |
52 | 389 backlog_widget = NULL; |
0 | 390 } |
391 status = NORMAL; | |
392 status_mask = NORMAL; | |
393 status_saved = NORMAL; | |
394 text_parsing = false; | |
395 text_stream.Clear(); | |
396 // backlog.clear(); | |
397 vector<BacklogItem> new_backlog; | |
398 backlog_item.Clear(); | |
399 cur_backlog_item.Clear(); | |
400 drawn_backlog_item.Clear(); | |
401 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
402 str = strstr(str, "\n[Text Window]\n"); |
0 | 403 |
404 if (str) { | |
405 SaveFaceHash face_log; | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
406 str += strlen("\n[Text Window]\n"); |
0 | 407 const char* strend = str; |
408 do { | |
409 str = strend; | |
410 | |
411 strend = strchr(str, '\n'); | |
52 | 412 if (strend == NULL) strend = str + strlen(str); |
0 | 413 else strend++; |
414 | |
415 if (str[0] == '[') break; // next section | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
416 if (strncmp(str, "TextWindow=",15) == 0) { |
0 | 417 str += 15; |
418 sscanf(str, "%d", &text_window_number); | |
419 } else if (strncmp(str, "SaveSelectCount=",16) == 0) { | |
420 str += 16; | |
421 sscanf(str, "%d", &save_selectcount); | |
422 } else if (strncmp(str, "RName.", 6) == 0) { | |
423 int n = str[6]-'A'; | |
424 if (n >= 0 && n < 26 && str[7] == '=') { | |
425 const char* s = strchr(str, '\n'); | |
426 int len = -1; | |
427 if (s) len = s-(str+8); | |
428 if (len > 0) { | |
429 replace_name2[n].assign(str+8, len); | |
430 } | |
431 } | |
432 } else if (strncmp(str, "Backlog.", 8) == 0) { | |
433 int cur_scn = -1; | |
434 int n = -1; | |
435 sscanf(str+8, "%d", &n); /* not used */ | |
436 const char* next_str = strchr(str, ';'); | |
52 | 437 while(next_str != NULL && next_str < strend) { |
0 | 438 str = next_str + 1; |
439 next_str = strchr(str, ';'); | |
52 | 440 if (next_str == NULL) next_str = strend; |
0 | 441 |
442 BacklogItem item; | |
443 if (str[0] == '"') { | |
444 const char* send = strchr(str+1, '"'); | |
52 | 445 if (send == NULL || send > next_str) continue; |
0 | 446 string tmp_str; tmp_str.assign(str+1, send-str-1); |
447 item.DeleteTextPos(); | |
448 item.text.Load(tmp_str); | |
449 str = send + 1; | |
450 } | |
451 if (str[0] == '.') { | |
452 item.DeleteTextPos(); | |
453 str++; | |
454 } else if (str[0] == ':') { | |
455 sscanf(str, ":%d:%d", &item.scn, &item.pos); | |
456 cur_scn = item.scn; | |
457 | |
458 } else { | |
459 item.scn = cur_scn; | |
460 sscanf(str, "%d", &item.pos); | |
461 } | |
462 str = strchr(str, ','); | |
52 | 463 if (str == NULL || str > next_str) goto backlog_store; |
0 | 464 str++; |
465 if (str[0] == ';' || str[0] == ',') | |
466 item.koe = -1; | |
467 else | |
468 sscanf(str, "%d", &item.koe); | |
469 str = strchr(str, ','); | |
52 | 470 if (str == NULL || str > next_str) goto backlog_store; |
0 | 471 str++; |
472 if (*str == '"') { | |
473 const char* send = strchr(str+1, '"'); | |
474 if (send) { | |
475 item.face.assign(str+1, send-str-1); | |
476 } | |
477 } else if (*str >= 'A' && *str <= 'Z') { | |
478 item.face = face_log.Get(*str - 'A'); | |
479 } | |
480 face_log.Add(item.face); | |
481 backlog_store: | |
482 new_backlog.push_back(item); | |
483 } | |
484 } | |
485 } while (*strend != 0); | |
486 } | |
487 if (new_backlog.empty() && (!backlog.empty())) { // empty ¤Ê¤é save_selectcount ¤Þ¤Ç backlog ¤ò´¬¤Ì᤹ | |
488 vector<BacklogItem>::iterator it = backlog.end(); | |
489 do { | |
490 it--; | |
491 if (it->scn == BacklogItem::SaveSelect && it->pos == save_selectcount) { | |
492 // Save °ÌÃÖ¤ò¸«¤Ä¤±¤¿¤é¤½¤ì°Ê¹ß¤ò erase | |
493 backlog.erase(it, backlog.end()); | |
494 break; | |
495 } | |
496 } while(it != backlog.begin()); | |
497 --save_selectcount; | |
498 } else { | |
499 backlog.swap(new_backlog); | |
500 } | |
501 // backlog.clear(); | |
502 } | |
503 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
504 void Text::hide(void) { |
0 | 505 if (text) text->hide(); |
506 if (kcursor) kcursor->hide(); | |
52 | 507 text = NULL; |
0 | 508 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
509 void Text::show(int num) { |
0 | 510 if (num != text_window_number) { |
511 hide(); | |
512 if (num >= 0 && num < 32 && widgets[num] != 0) { | |
513 text_window_number = num; | |
514 } | |
515 } | |
516 text = widgets[text_window_number]; | |
517 text->show(); | |
518 if (kcursor) { | |
519 int kx, ky, d; | |
520 char key[1024]; | |
521 sprintf(key, "#WINDOW.%03d.KEYCUR_MOD", text_window_number); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
522 config->GetParam(key, 3, &d, &kx, &ky); |
0 | 523 // Àµ¤·¤¯¤Ê¤¤µ¤¤¬¤¹¤ë |
524 kx += text->wid->Pic()->PosX(); | |
525 ky += text->wid->Pic()->PosY(); | |
526 // Èù̯¤Ë²¼¤Ë¤¹¤ë | |
527 ky += 8; | |
528 kcursor->Pic()->Move(kx, ky); | |
529 } | |
530 } | |
52 | 531 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
532 void Text::DrawBacklog(BacklogItem& item, Cmd& cmd) { |
18 | 533 show(); |
0 | 534 text->wid->deactivate(); |
535 status_mask = Status(status_mask | BACKLOG_WAIT_MASK); | |
536 drawn_backlog_item = item; | |
537 if (item.text.container.empty()) { | |
538 // cmd ¤«¤é text ÆâÍƤòºÆ¹½À® | |
539 TextStream saved_text = text_stream; | |
540 text_stream.Clear(); | |
541 AddText(cmd.Str(cmd.args[0])); | |
542 item.text = text_stream; | |
543 text_stream = saved_text; | |
544 } | |
18 | 545 item.text.InsertColor(0, item.text.container.size(), 0xff,0xff,0); |
17 | 546 text->StartText(item.text); |
0 | 547 text->wid->Flush(); |
548 if (item.face.empty()) text->ResetFace(); | |
549 else text->ShowFace(item.face.c_str()); | |
550 if (kcursor) kcursor->hide(); | |
551 } | |
552 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
553 void Text::CreateSelBG(void) { |
52 | 554 if (sel_bg1 != NULL || sel_bg2 != NULL) return; |
0 | 555 |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
556 const char* btnfile1 = config->GetParaStr("#SELBTN.000.NAME"); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
557 const char* btnfile2 = config->GetParaStr("#SELBTN.000.BACK"); |
0 | 558 char path[1024]; |
559 strcpy(path, btnfile1); | |
560 sel_bg1 = parent.Root().NewSurface(path); | |
52 | 561 if (sel_bg1 == NULL) { |
0 | 562 sprintf(path,"%s.g00",btnfile1); |
563 sel_bg1 = parent.Root().NewSurface(path); | |
564 } | |
565 strcpy(path, btnfile2); | |
566 sel_bg2 = parent.Root().NewSurface(path); | |
52 | 567 if (sel_bg2 == NULL) { |
0 | 568 sprintf(path,"%s.g00",btnfile2); |
569 sel_bg2 = parent.Root().NewSurface(path); | |
570 } | |
571 sel_bg_rect = Rect(0,0,0,0); | |
572 if (sel_bg1) sel_bg_rect.join(Rect(*sel_bg1)); | |
573 if (sel_bg2) sel_bg_rect.join(Rect(*sel_bg2)); | |
574 } | |
575 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
576 void Text::CreateSelect(Cmd& cmd) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
577 char key[23]; |
0 | 578 sprintf(key, "#WINDOW.%03d.SELCOM_USE",text_window_number); |
579 int sel_type = 0; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
580 if (cmd.cmd3 == 1) config->GetParam(key, 1, &sel_type); |
38
658272d883ed
* Support (more or less) button style selects (fuuko's ones)
thib
parents:
18
diff
changeset
|
581 else if (cmd.cmd3 == 3) sel_type = 0; |
0 | 582 |
583 int sel_size = cmd.args.size() / 2; | |
584 int i; | |
585 // cur_backlog_item ¤Ë¼¡¤Ëbacklog¤ËÆþ¤ë¤Ù¤ÆâÍƤòºîÀ® | |
586 // CreateSelect() ¸å¡¢SAVEPOINT ¤Ê¤Î¤Ç¸½ºß¤Îbacklog¤ÎÆâÍÆ(Á°¤Î¥á¥Ã¥»¡¼¥¸)¤¬ | |
587 // backlog ¤ËÂåÆþ¤µ¤ì¤ë¡£¤½¤Î¸å¡¢backlog_item ¤Ë cur_backlog_item ¤ÎÆâÍƤ¬¥»¥Ã¥È¤µ¤ì¤ë(Wait()Æâ) | |
588 char backlog_sel_text[11] = {0x81,0x69,0x91,0x49,0x91,0xf0,0x8e,0x88,0x81,0x6a,0x00}; | |
589 cur_backlog_item.Clear(); | |
590 cur_backlog_item.AddTextPos(cmd); | |
591 cur_backlog_item.text.Add(backlog_sel_text); | |
592 cur_backlog_item.text.AddReturn(); | |
593 sel_backlog_pos.clear(); | |
594 for (i=0; i<sel_size; i++) { | |
595 sel_backlog_pos.push_back(cur_backlog_item.text.container.size()); | |
596 cur_backlog_item.text.Add(cmd.Str(cmd.args[i*2])); | |
597 cur_backlog_item.text.AddReturn(); | |
598 } | |
599 sel_backlog_pos.push_back(cur_backlog_item.text.container.size()); | |
600 | |
601 if (sel_type == 0) { // Princess Bride: ÁªÂò¥¦¥£¥ó¥É¥¦¤òÊÌɽ¼¨ | |
602 External_select: | |
603 CreateSelBG(); | |
604 hide(); // ¤Ê¤Î¤Ç¡¢¥Æ¥¥¹¥È¥¦¥£¥ó¥É¥¦¤Ï¾Ãµî | |
40 | 605 int baseposx, baseposy, repposx, repposy, centerx, centery; |
0 | 606 int mojisize, col1, col2; |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
607 config->GetParam("#SELBTN.000.CENTERING", 2, ¢erx, ¢ery); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
608 config->GetParam("#SELBTN.000.BASEPOS", 2, &baseposx, &baseposy); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
609 config->GetParam("#SELBTN.000.REPPOS", 2, &repposx, &repposy); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
610 config->GetParam("#SELBTN.000.MOJISIZE", 1, &mojisize); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
611 config->GetParam("#SELBTN.000.MOJIDEFAULTCOL", 1, &col1); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
612 config->GetParam("#SELBTN.000.MOJISELECTCOL", 1, &col2); |
0 | 613 if (col1 == col2) col2 = 1; // CLANNAD ¤Ç¤È¤ê¤¢¤¨¤º¡£ |
614 int r, g, b; | |
615 sprintf(key, "#COLOR_TABLE.%03d", col1); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
616 config->GetParam(key, 3, &r, &g, &b); |
0 | 617 Color fore(r,g,b); |
618 sprintf(key, "#COLOR_TABLE.%03d", col2); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
619 config->GetParam(key, 3, &r, &g, &b); |
0 | 620 Color seled(r,g,b); |
621 | |
622 /* ¥¦¥£¥¸¥Ã¥ÈºîÀ® */ | |
623 /* ¥¦¥£¥ó¥É¥¦ÇطʤÎÂ礤µ¤òµá¤á¤ë */ | |
624 if (baseposx == 0 && sel_bg_rect.width() != 0) | |
625 baseposx = (parent.Width()-sel_bg_rect.width()) / 2; // ¥Ü¥¿¥ó°ÌÃÖ¤ò¥»¥ó¥¿¥ê¥ó¥° | |
40 | 626 if (centerx) |
627 baseposx = (parent.Width()-sel_bg_rect.width()-sel_size*repposx) / 2; | |
628 if (centery) | |
629 baseposy = (parent.Height()-sel_bg_rect.height()-sel_size*repposy) / 2; | |
0 | 630 |
631 sel_widget = parent.create_node( Rect(0, 0, parent.Width(), parent.Height()),0); | |
632 | |
633 for (i=0; i<sel_size; i++) { | |
634 PicBase* p; | |
635 // ÇطʺîÀ® | |
636 if (sel_bg2) { | |
637 p = sel_widget->create_node(Rect(baseposx, baseposy, baseposx+sel_bg_rect.width(), baseposy+sel_bg_rect.height()),0); | |
638 p->SetSurface(sel_bg2, 0, 0); | |
639 } | |
640 if (sel_bg1) { | |
641 p = sel_widget->create_node(Rect(baseposx, baseposy, baseposx+sel_bg_rect.width(), baseposy+sel_bg_rect.height()),0); | |
642 p->SetSurface(sel_bg1, 0, 0); | |
643 } | |
644 /* ¥Ü¥¿¥óºîÀ® */ | |
645 const char* str = cmd.Str(cmd.args[i*2]); | |
646 int value = cmd.args[i*2+1].value; | |
647 while(selects.size() <= value) selects.push_back(0); // vector ¤ÎÂ礤µ¤ò¹¤²¤ë | |
648 | |
649 kconv( (const unsigned char*)str, (unsigned char*)key); | |
650 selects[value] = new WidTextButton(event, sel_widget, key, mojisize, WidTextButton::CENTER, | |
651 Rect(baseposx, baseposy, baseposx+sel_bg_rect.width(), baseposy+sel_bg_rect.height()), 1, fore, seled, Color(0,0,0,0)); | |
652 selects[value]->press_func = &PressFuncButton; | |
653 selects[value]->press_pointer = (void*)this; | |
654 | |
655 baseposx += repposx; | |
656 baseposy += repposy; | |
657 } | |
658 sel_widget->show_all(); | |
659 status = WAIT_SELECT_OUTBOX; | |
660 } else { // CLANNAD: ¥Æ¥¥¹¥È¥¦¥£¥ó¥É¥¦Æâ¤ËÁªÂò»èɽ¼¨ | |
661 int mojisize; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
662 config->GetParam("#SELBTN.000.MOJISIZE", 1, &mojisize); |
0 | 663 Color fore(0xff,0xff,0xff); |
664 Color seled(0xff,0xff,0xff); | |
665 | |
666 show(); | |
52 | 667 if (text == NULL) goto External_select; // ¥Æ¥¥¹¥È¡¦¥¦¥£¥ó¥É¥¦¤òɽ¼¨¤Ç¤¤Ê¤±¤ì¤Ð³°ÉôÁªÂò»è¤Ë¤¹¤ë |
0 | 668 text->wid->Clear(); |
669 if (kcursor) kcursor->hide(); | |
670 /* ¥¦¥£¥¸¥Ã¥ÈºîÀ® : ¥Æ¥¥¹¥Èɽ¼¨ÈϰϤÈƱ¤¸*/ | |
671 int posx = text->wid->pictext->PosX(); | |
672 int posy = text->wid->pictext->PosY(); | |
673 int sel_w = text->wid->pictext->Width(); | |
674 int sel_h = text->wid->pictext->Height(); | |
675 sel_widget = text->wid->PicNode()->create_node(Rect(posx, posy, posx+sel_w, posy+sel_h), 0); | |
676 | |
677 int sel_y = 0; | |
678 for (i=0; i<sel_size; i++) { | |
679 /* ¥Ü¥¿¥óºîÀ® */ | |
680 const char* str = cmd.Str(cmd.args[i*2]); | |
681 int value = cmd.args[i*2+1].value; | |
682 while(selects.size() <= value) selects.push_back(0); // vector ¤ÎÂ礤µ¤ò¹¤²¤ë | |
683 | |
684 kconv( (const unsigned char*)str, (unsigned char*)key); | |
685 selects[value] = new WidTextButton(event, sel_widget, key, mojisize, WidTextButton::Attribute(WidTextButton::REVERSE | WidTextButton::NOPADDING), | |
686 Rect(0, sel_y, sel_w, sel_y), 1, fore, seled, Color(0,0,0,0)); | |
687 selects[value]->press_func = &PressFuncButton; | |
688 selects[value]->press_pointer = (void*)this; | |
689 | |
690 sel_y += selects[value]->Pic()->Height() + 1; | |
691 } | |
692 sel_widget->show_all(); | |
693 status = WAIT_SELECT_INBOX; | |
694 } | |
695 } | |
696 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
697 void Text::AddText(const char* str_o) { |
0 | 698 char str[10001]; |
52 | 699 if (text == NULL) return; |
0 | 700 /* ¤Þ¤º¡¢replace string ¤òÊÑ´¹ */ |
701 int i; | |
702 int cnt = 0; | |
703 /* ¡ö = 81 96 A-Z = 0x82 [0x60-0x79] */ | |
704 /* ¡ó = 81 93 A-Z = 0x82 [0x60-0x79] */ | |
705 for (i=0; cnt<10000 && str_o[i] != 0; i++) { | |
706 if (str_o[i] < 0) { | |
707 if ( (unsigned char)str_o[i] == 0x81 && (unsigned char)str_o[i+1] == 0x96 && (unsigned char)str_o[i+2] == 0x82) { | |
708 int c = str_o[i+3]; | |
709 if (c >= 0x60 && c <= 0x79 && replace_name[c-0x60].length() != 0) { // ̾Á°ÊÑ´¹ | |
710 i += 3; | |
711 strcpy(str+cnt, replace_name[c-0x60].c_str()); | |
712 cnt += replace_name[c-0x60].length(); | |
713 continue; | |
714 } | |
715 } else if ( (unsigned char)str_o[i] == 0x81 && (unsigned char)str_o[i+1] == 0x93 && (unsigned char)str_o[i+2] == 0x82) { | |
716 int c = str_o[i+3]; | |
717 if (c >= 0x60 && c <= 0x79 && replace_name2[c-0x60].length() != 0) { // ̾Á°ÊÑ´¹£² | |
718 i += 3; | |
719 strcpy(str+cnt, replace_name2[c-0x60].c_str()); | |
720 cnt += replace_name2[c-0x60].length(); | |
721 continue; | |
722 } | |
723 } | |
724 str[cnt++] = str_o[i++]; | |
725 } | |
726 str[cnt++] = str_o[i]; | |
727 } | |
728 str[cnt] = 0; | |
729 str[10000] = 0; | |
730 char* str_top = str; | |
731 | |
732 for (char* s = str_top; *s != 0; s++) { | |
733 // if (*(unsigned char*)s == 0xa1 && *(unsigned char*)(s+1) == 0xda) { /* euc */ | |
734 if (*(unsigned char*)s == 0x81 && *(unsigned char*)(s+1) == 0x79) { /* sjis */ | |
735 // ̾Á° | |
736 *s = 0; | |
737 if (s != str_top) text_stream.Add(str_top); | |
738 s += 2; | |
739 char* name_top = s; | |
740 for (; *s != 0; s++) { | |
741 // if (*(unsigned char*)s == 0xa1 && *(unsigned char*)(s+1) == 0xdb) { /* euc */ | |
742 if (*(unsigned char*)s == 0x81 && *(unsigned char*)(s+1) == 0x7a) { /* sjis */ | |
743 *s = 0; | |
744 s += 2; | |
745 text_stream.AddName(name_top); | |
746 break; | |
747 } | |
748 if (*s < 0 && s[1] != 0) s++; // Á´³Ñʸ»ú¤Ê¤é£²»úÈô¤Ð¤¹ | |
749 } | |
750 str_top = s; | |
751 } | |
752 if (*s == 0x0a) { | |
753 *s = 0; | |
754 text_stream.Add(str_top); | |
755 text_stream.AddReturn(); | |
756 str_top = s; | |
757 } else if (*s < 0 && s[1] != 0) s++; | |
758 } | |
759 text_stream.Add(str_top); | |
760 } | |
761 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
762 void Text::Exec(Cmd& cmd) { |
0 | 763 if (cmd.cmd_type == CMD_TEXT) { |
52 | 764 if (text == NULL) { |
0 | 765 show(); |
766 } | |
767 if (cmd.args.size() != 1) return; | |
768 if (ruby_text_flag) { | |
769 ruby_text = cmd.Str(cmd.args[0]); | |
770 ruby_text_flag = 0; | |
771 cmd.clear(); | |
772 return; | |
773 } | |
774 cur_backlog_item.AddTextPos(cmd); | |
775 AddText(cmd.Str(cmd.args[0])); | |
776 char debug[1024]; | |
777 kconv( (unsigned char*)cmd.Str(cmd.args[0]), (unsigned char*)debug); | |
778 eprintf("text: %s\n",debug); | |
779 if (text_parsing) | |
780 cmd.clear(); | |
781 else | |
782 cmd.cmd_type = CMD_SAVEPOINT; | |
783 text_parsing = true; /* ¥Æ¥¥¹¥ÈÂÔ¤Áľ¸å¤Î¥Æ¥¥¹¥È°ÌÃ֡᥻¡¼¥Ö°ÌÃÖ */ | |
784 return; | |
785 } | |
55 | 786 |
0 | 787 if (cmd.cmd_type != CMD_OTHER) return; |
55 | 788 |
789 CommandHandler::Exec(cmd); | |
52 | 790 } |
0 | 791 |
792 extern int print_blit; | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
793 bool Text::Wait(unsigned int current_time, Cmd& cmd) { |
52 | 794 if (current_time != Event::Time::NEVER_WAKE) old_time = current_time; |
0 | 795 /* |
796 if (event.presscount(MOUSE_UP)) { | |
797 if (text) text->Pic()->ReBlit(); | |
798 } | |
799 if (event.presscount(MOUSE_DOWN)) { | |
800 print_blit^=1; | |
801 } | |
802 */ | |
803 | |
804 if (status == NORMAL && status_mask == NORMAL) return false; | |
52 | 805 |
0 | 806 if (status_mask & WAIT_EXTRN_MASK) return true; |
807 if (status_mask & (BACKLOG_MASK|BACKLOG_MASK_FWD) ) { | |
808 if (status_mask & BACKLOG_WAIT_MASK) ; | |
809 else { | |
52 | 810 if ( (status == WAIT_TEXT && text != NULL) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) { |
0 | 811 if(text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) { |
812 text->wid->Flush(); // ɽ¼¨¤òºÇ¸å¤Î¾õÂ֤ˤ¹¤ë | |
813 } | |
52 | 814 if (status == WAIT_TEXT && text != NULL && kcursor != NULL) kcursor->show(); |
0 | 815 } |
816 } | |
817 if (status_mask & BACKLOG_MASK) { | |
818 cmd.cmd_type = CMD_BACKLOGREQ; | |
819 } else { | |
820 cmd.cmd_type = CMD_BACKLOGREQ_FWD; | |
821 } | |
822 status_mask = Status(status_mask & ~(BACKLOG_MASK|BACKLOG_MASK_FWD)); | |
823 return false; | |
824 } | |
825 if ( (status_mask & BACKLOG_WAIT_MASK) && (status_mask & BACKLOG_MASK_KOE)) { | |
826 if (drawn_backlog_item.koe != -1) { | |
827 cmd.cmd_type = CMD_OTHER; | |
828 cmd.cmd1 = 1; | |
829 cmd.cmd2 = 0x17; | |
830 cmd.cmd3 = 0; | |
831 cmd.cmd4 = 1; | |
832 cmd.args.clear(); | |
833 cmd.args.push_back(VarInfo(drawn_backlog_item.koe)); | |
834 cmd.args.push_back(VarInfo(0)); | |
835 } | |
836 status_mask = Status(status_mask & ~BACKLOG_MASK_KOE); | |
837 return false; | |
838 } | |
839 if (skip_mode & SKIP_IN_MENU) return false; | |
840 if (status_mask & SAVEMASK) { | |
841 cmd.cmd_type = CMD_SAVEREQ; | |
842 status_mask = Status(status_mask & ~SAVEMASK); | |
843 return false; | |
844 } | |
845 if (status_mask & LOADMASK) { | |
846 cmd.cmd_type = CMD_LOADREQ; | |
847 status_mask = Status(status_mask & ~LOADMASK); | |
848 return false; | |
849 } | |
850 if (status_mask & SKIPEND_MASK) { | |
851 if ( (skip_mode & SKIP_TEXT) && (skip_mode & SKIPEND_TEXT)) { | |
852 if (skip_mode & SKIPEND_KEY) { // shift skip Ãæ | |
853 SkipMode new_mode = SkipMode(skip_mode & (~SKIPEND_TEXT)); | |
854 if (new_mode & (SKIP_GRP_NOEFFEC || SKIP_GRP_NODRAW)) | |
855 new_mode = SkipMode(new_mode & (~SKIP_GRP_FAST)); | |
856 cmd.SetSysvar(TYPE_SYS_SKIPMODE, new_mode); | |
857 } else { | |
858 cmd.SetSysvar(TYPE_SYS_SKIPMODE, SKIP_NO); | |
859 } | |
860 } | |
861 status_mask = Status(status_mask & ~SKIPEND_MASK); | |
862 } | |
863 if (status_mask & SKIPMASK) { | |
864 if (skip_mode != SKIP_NO) { | |
865 cmd.SetSysvar(TYPE_SYS_SKIPMODE, skip_mode | SKIPEND_TEXT); | |
866 } else { | |
867 cmd.SetSysvar(TYPE_SYS_SKIPMODE, SKIP_TEXT | SKIP_GRP_FAST | SKIPEND_TEXT); | |
868 } | |
869 status_mask = Status(status_mask & ~SKIPMASK); | |
870 return false; | |
871 } | |
872 if (event.presscount(MOUSE_RIGHT)) { | |
52 | 873 if ( (status == WAIT_TEXT && text != NULL) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) { |
0 | 874 if(text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) { |
875 text->wid->Flush(); // ɽ¼¨¤òºÇ¸å¤Î¾õÂ֤ˤ¹¤ë | |
876 } | |
877 cmd.cmd_type = CMD_MENUREQ; | |
878 if (!(status_mask & STATSAVE_MASK)) { | |
879 status_saved = status; | |
880 status_mask = Status(status_mask | STATSAVE_MASK); | |
881 } | |
882 return false; | |
883 } else if (status == WAIT_CLICK_MOUSEPOS) { | |
884 status = WAIT_CLICK_MOUSEPOSEND_R; | |
885 } | |
886 } | |
887 if (event.presscount(MOUSE_UP)) { | |
52 | 888 if ( (status == WAIT_TEXT && text != NULL) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) { |
0 | 889 if(text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) { |
890 text->wid->Flush(); // ɽ¼¨¤òºÇ¸å¤Î¾õÂ֤ˤ¹¤ë | |
891 } | |
892 cmd.cmd_type = CMD_BACKLOGREQ; | |
893 if (!(status_mask & STATSAVE_MASK)) { | |
894 status_saved = status; | |
895 status_mask = Status(status_mask | STATSAVE_MASK); | |
896 } | |
897 return false; | |
898 } | |
899 } | |
900 if (status_mask & CLEARSCR_MASK) { | |
52 | 901 if ( (status == WAIT_TEXT && text != NULL ) || status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) { |
0 | 902 if (skip_mode) skip_mode = SKIP_NO; |
903 if (text && text->wid->status != WidText::PREPARE && text->wid->status != WidText::WAIT && text->wid->status != WidText::WAIT2) { | |
904 text->wid->Flush(); // ɽ¼¨¤òºÇ¸å¤Î¾õÂ֤ˤ¹¤ë | |
905 return true; | |
906 } | |
907 status_mask = Status(status_mask & (~CLEARSCR_MASK) | CLEARSCR_WAIT_MASK); | |
52 | 908 if (text != NULL) text->hide(); |
909 if (kcursor != NULL) kcursor->hide(); | |
910 if (sel_widget != NULL) sel_widget->hide(); | |
911 if (backlog_widget != NULL) backlog_widget->hide(); | |
0 | 912 return true; |
913 } | |
914 status_mask = Status(status_mask & (~CLEARSCR_MASK)); | |
915 return false; | |
916 } | |
917 if (status_mask & CLEARSCR_WAIT_MASK) { | |
918 return true; | |
919 } | |
920 if (status == WAIT_TEXT) { | |
52 | 921 if (text == NULL) { |
922 status = NORMAL; | |
923 return false; | |
924 } | |
0 | 925 if (skip_mode & SKIP_TEXT) { |
926 } else if (text->wid->status != WidText::PREPARE) { | |
927 return true; | |
928 } | |
52 | 929 if (kcursor != NULL) kcursor->hide(); |
0 | 930 text_stream.Clear(); |
931 status = NORMAL; | |
932 cmd.cmd_type = CMD_TEXTEND; | |
933 return false; | |
934 } | |
935 if (status == WAIT) { | |
936 if (skip_mode & SKIP_TEXT) ; | |
937 else if (wait_time > current_time) return true; | |
938 status = NORMAL; | |
939 } else if (status == WAIT_CLICK) { | |
940 if (skip_mode & SKIP_TEXT) ; | |
941 else if (wait_time > current_time) return true; | |
942 status = NORMAL; | |
943 cmd.SetSysvar(0); | |
944 } else if (status == WAIT_ABORT) { | |
945 cmd.SetSysvar(1); | |
946 status = NORMAL; | |
947 } else if (status == WAIT_CLICK_MOUSEPOS || status == WAIT_CLICK_MOUSEPOSEND_L || status == WAIT_CLICK_MOUSEPOSEND_R) { | |
948 if (status == WAIT_CLICK_MOUSEPOS && (skip_mode & SKIP_TEXT) == 0) return true; // keep wait | |
949 else { | |
950 int x, y; | |
951 event.MousePos(x,y); | |
952 if (status == WAIT_CLICK_MOUSEPOS) x = y = 0; // skip mode | |
953 cmd.clear(); | |
954 cmd.SetFlagvar(wait_savedvar[0], x); | |
955 cmd.SetFlagvar(wait_savedvar[1], y); | |
956 if (status == WAIT_CLICK_MOUSEPOSEND_R) cmd.SetSysvar(-1); | |
957 else cmd.SetSysvar(0); | |
958 status = NORMAL; | |
959 } | |
960 } else if (status == WAIT_SELECT_INBOX || status == WAIT_SELECT_OUTBOX) { | |
961 return true; | |
962 } else if ( int(status) >= WAIT_SELECT_VALUE) { | |
963 int sel_val = int(status) - WAIT_SELECT_VALUE; | |
964 cmd.SetSysvar(sel_val); | |
965 selects.clear(); | |
966 delete sel_widget; | |
52 | 967 sel_widget = NULL; |
0 | 968 status = NORMAL; |
969 // CreateSelect() ¤ÇºîÀ®¤µ¤ì¤¿ cur_backlog_item ¤ò backlog_item ¤ØÈ¿±Ç¤µ¤»¤ë | |
970 cur_backlog_item.text.InsertColor(sel_backlog_pos[sel_val], sel_backlog_pos[sel_val+1], 0xff, 0, 0); | |
971 backlog_item = cur_backlog_item; | |
972 cur_backlog_item.Clear(); | |
973 } | |
974 return false; | |
975 } | |
976 | |
977 void clearbtn_press(void* pointer, WidButton* button) { | |
52 | 978 if (pointer == NULL) return; |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
979 Text* t = (Text*)pointer; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
980 t->status_mask = Text::Status(t->status_mask | Text::CLEARSCR_MASK); |
0 | 981 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
982 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
983 void Text::PressFuncSkip(void* pointer, WidButton* from) { |
52 | 984 if (pointer == NULL) return; |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
985 Text* t = (Text*)pointer; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
986 t->status_mask = Text::Status(t->status_mask | Text::SKIPMASK); |
0 | 987 return; |
988 } | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
989 void Text::PressFuncLoad(void* pointer, WidButton* from) { |
52 | 990 if (pointer == NULL) return; |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
991 Text* t = (Text*)pointer; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
992 t->status_mask = Text::Status(t->status_mask | Text::LOADMASK); |
0 | 993 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
994 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
995 void Text::PressFuncSave(void* pointer, WidButton* from) { |
52 | 996 if (pointer == NULL) return; |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
997 Text* t = (Text*)pointer; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
998 t->status_mask = Text::Status(t->status_mask | Text::SAVEMASK); |
0 | 999 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1000 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1001 void Text::PressFuncBacklog(void* pointer, WidButton* from) { |
52 | 1002 if (pointer == NULL) return; |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1003 Text* t = (Text*)pointer; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1004 t->status_mask = Text::Status(t->status_mask | Text::BACKLOG_MASK); |
0 | 1005 } |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1006 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1007 void Text::PressFuncBacklogFwd(void* pointer, WidButton* from) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1008 if (pointer == NULL) return; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1009 Text* t = (Text*)pointer; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1010 t->status_mask = Text::Status(t->status_mask | Text::BACKLOG_MASK_FWD); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1011 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1012 |
0 | 1013 void movebtn_drag(int from_x, int from_y, int x, int y, void* pointer, WidButton* button) { |
52 | 1014 if (pointer == NULL) return; |
0 | 1015 fprintf(stderr,"drag.\n"); |
1016 } | |
52 | 1017 |
0 | 1018 #define BTNCNT 10 |
47
5f548e5957a8
* get rid of the "deprecated conversion from string constant to ‘char*’" warnings
thib
parents:
43
diff
changeset
|
1019 static const char* btnname[BTNCNT] = { |
0 | 1020 "MOVE", |
1021 "CLEAR", | |
1022 "READJUMP", | |
1023 "AUTOMODE", | |
1024 "MSGBK", | |
1025 "MSGBKLEFT", | |
1026 "MSGBKRIGHT", | |
1027 "EXBTN_000", | |
1028 "EXBTN_001", | |
1029 "EXBTN_002" | |
1030 }; | |
52 | 1031 |
0 | 1032 static int btnpos[BTNCNT] = { // g00 ¥Õ¥¡¥¤¥ëÆâ¤Î¥Ü¥¿¥ó¾ðÊó¤Î°ÌÃÖ |
1033 // 0, 1, 13, 12, 2, 3, 4, 5, 6, 7 // princess bride? | |
1034 0, 1, 13, 14, 2, 3, 4, 5, 6, 7 // tomoyo after? | |
1035 }; | |
52 | 1036 |
0 | 1037 static WidButton::PressFunc btnpress[BTNCNT] = { |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1038 0, clearbtn_press, &Text::PressFuncSkip,0,&Text::PressFuncBacklogFwd,&Text::PressFuncBacklog,&Text::PressFuncBacklogFwd,&Text::PressFuncSave,&Text::PressFuncLoad,0 |
0 | 1039 }; |
52 | 1040 |
0 | 1041 static WidButton::DragFunc btndrag[BTNCNT] = { |
1042 movebtn_drag, 0,0,0,0, 0,0,0,0, 0 | |
1043 }; | |
1044 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1045 void Text::SetTextSpeed(int speed) { |
0 | 1046 // 100 : 10char / sec |
1047 // 10 : 100char / sec | |
1048 // text widget: | |
1049 if (speed <= 0) speed = -1; | |
1050 else if (speed > 1000) speed = 1; | |
1051 else speed = 1000 / speed; | |
1052 int i; | |
1053 for (i=0; i<32; i++) | |
1054 if (widgets[i]) widgets[i]->wid->SetSpeed(speed); | |
1055 } | |
52 | 1056 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1057 void Text::SetTextWait(int wait) { |
0 | 1058 int i; |
1059 for (i=0; i<32; i++) | |
1060 if (widgets[i]) widgets[i]->wid->SetWait(wait); | |
1061 } | |
1062 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1063 void Text::SetWindowColor(int r, int g, int b, int a, bool is_transparent) { |
0 | 1064 char key[1024]; |
1065 int w; | |
1066 | |
1067 for (w=0; w<32; w++) { | |
52 | 1068 if (widgets[w] == NULL) continue; |
0 | 1069 sprintf(key, "#WAKU.%03d.000.BACK", w); |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1070 const char* back = config->GetParaStr(key); |
52 | 1071 if (back == NULL || back[0] == 0) continue; |
0 | 1072 sprintf(key, "%s.g00", back); |
1073 Surface* back_s = parent.Root().NewSurface(key); | |
52 | 1074 if (back_s == NULL) continue; |
0 | 1075 Rect rect(*back_s); |
1076 Surface* new_s = parent.Root().NewSurface(rect.width(), rect.height(), ALPHA_MASK); | |
1077 DSurfaceMove(back_s, rect, new_s, rect); | |
1078 DSurfaceFillA(new_s, rect, r, g, b, a); | |
1079 widgets[w]->wid->Pic()->SetSurface(new_s, 0, 0); | |
1080 widgets[w]->wid->Pic()->SetSurfaceFreeFlag(1); | |
1081 if (!is_transparent) | |
1082 widgets[w]->wid->Pic()->SetSurfaceAttribute(PicBase::BLIT_MULTIPLY); | |
1083 parent.Root().DeleteSurface(back_s); | |
1084 } | |
1085 } | |
1086 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1087 void Text::SetCursor(int cursor_no) { |
0 | 1088 char key[1024]; |
1089 sprintf(key, "#CURSOR.%03d.NAME", cursor_no); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1090 string path = config->GetParaStr(key); |
0 | 1091 if (path.length() == 0) return; // ̾Á°¤Ê¤· |
1092 path += ".pdt"; | |
1093 int w,h,cont,speed; | |
1094 sprintf(key, "#CURSOR.%03d.SIZE", cursor_no); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1095 config->GetParam(key, 2, &w, &h); |
0 | 1096 sprintf(key, "#CURSOR.%03d.CONT", cursor_no); |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1097 config->GetParam(key, 1, &cont); |
0 | 1098 sprintf(key, "#CURSOR.%03d.SPEED", cursor_no); |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1099 config->GetParam(key, 1, &speed); |
0 | 1100 |
1101 // speed ¤Ç£±¼þ¡¢cont ²óÊѲ½ | |
52 | 1102 if (kcursor != NULL) delete kcursor; |
0 | 1103 |
1104 kcursor = new WidTimeCursor(event, speed/cont, &parent, path.c_str(), 0, 0, w, 0, cont, Rect(0,0,w,h)); | |
1105 int i; | |
1106 for (i=0; i<32; i++) { | |
1107 if (widgets[i]) widgets[i]->wid->SetCursor(kcursor); | |
1108 } | |
1109 } | |
1110 | |
52 | 1111 void kconv(const unsigned char* src, unsigned char* dest) { //FIXME: code duplication? |
0 | 1112 /* input : sjis output: euc */ |
1113 while(*src) { | |
1114 unsigned int high = *src++; | |
1115 if (high < 0x80) { | |
1116 /* ASCII */ | |
1117 *dest++ = high; continue; | |
1118 } else if (high < 0xa0) { | |
1119 /* SJIS */ | |
1120 high -= 0x71; | |
1121 } else if (high < 0xe0) { | |
1122 /* hankaku KANA */ | |
1123 *dest++ = 0x8e; *dest++ = high; | |
1124 continue; | |
1125 } else { /* high >= 0xe0 : SJIS */ | |
1126 high -= 0xb1; | |
1127 } | |
1128 /* SJIS convert */ | |
1129 high = (high<<1) + 1; | |
1130 | |
1131 unsigned int low = *src++; | |
1132 if (low == 0) break; /* incorrect code */ | |
1133 if (low > 0x7f) low--; | |
1134 if (low >= 0x9e) { | |
1135 low -= 0x7d; | |
1136 high++; | |
1137 } else { | |
1138 low -= 0x1f; | |
1139 } | |
1140 *dest++ = high | 0x80; *dest++ = low | 0x80; | |
1141 } | |
1142 *dest = 0; | |
1143 } | |
52 | 1144 |
1145 void kconv_rev(const unsigned char* src, unsigned char* dest) { //FIXME: code duplication? | |
0 | 1146 /* input : euc output: sjis */ |
1147 while(*src) { | |
1148 unsigned int high = *src++; | |
1149 if (high < 0x80) { | |
1150 /* ASCII */ | |
1151 *dest++ = high; continue; | |
1152 } else if (high == 0x8e) { /* hankaku KANA */ | |
1153 high = *src; | |
1154 if (high >= 0xa0 && high < 0xe0) | |
1155 *dest++ = *src++; | |
1156 continue; | |
1157 } else { | |
1158 unsigned int low = *src++; | |
1159 if (low == 0) break; /* incorrect code , EOS */ | |
1160 if (low < 0x80) continue; /* incorrect code */ | |
1161 /* convert */ | |
1162 low &= 0x7f; high &= 0x7f; | |
1163 low += (high & 1) ? 0x1f : 0x7d; | |
1164 high = (high-0x21)>>1; | |
1165 high += (high > 0x1e) ? 0xc1 : 0x81; | |
1166 *dest++ = high; | |
1167 if (low > 0x7f) low++; | |
1168 *dest++ = low; | |
1169 } | |
1170 } | |
1171 *dest = 0; | |
1172 } | |
52 | 1173 |
0 | 1174 string kconv(const string& s) { |
1175 char* out = new char[s.length()*2+100]; | |
1176 kconv((const unsigned char*)s.c_str(), (unsigned char*)out); | |
1177 string ret = out; | |
1178 delete[] out; | |
1179 return ret; | |
1180 } | |
52 | 1181 |
0 | 1182 string kconv_rev(const string& s) { |
1183 char* out = new char[s.length()*2+100]; | |
1184 kconv_rev((const unsigned char*)s.c_str(), (unsigned char*)out); | |
1185 string ret = out; | |
1186 delete[] out; | |
1187 return ret; | |
1188 } | |
1189 | |
1190 /**************************************************************:: | |
1191 ** | |
1192 ** BacklogItem | |
1193 */ | |
1194 | |
1195 BacklogItem::BacklogItem(void) { | |
1196 scn = -1; | |
1197 pos = -1; | |
1198 koe = -1; | |
1199 face = ""; | |
1200 text.kanji_type = TextStream::sjis; | |
1201 } | |
52 | 1202 |
0 | 1203 void BacklogItem::Clear(void) { |
1204 scn = -1; | |
1205 pos = -1; | |
1206 koe = -1; | |
1207 text.Clear(); | |
1208 } | |
52 | 1209 |
0 | 1210 void BacklogItem::AddTextPos(Cmd& cmd) { |
1211 if (scn == -1 && pos == -1) { | |
1212 scn = cmd.scn; | |
1213 pos = cmd.pos; | |
1214 return; | |
1215 } | |
1216 DeleteTextPos(); | |
1217 } | |
52 | 1218 |
0 | 1219 void BacklogItem::DeleteTextPos(void) { |
1220 scn = 0; | |
1221 pos = -1; | |
1222 } | |
52 | 1223 |
0 | 1224 BacklogItem& BacklogItem::operator =(const BacklogItem& p) { |
1225 scn = p.scn; | |
1226 pos = p.pos; | |
1227 koe = p.koe; | |
1228 face = p.face; | |
1229 text = p.text; | |
1230 } | |
52 | 1231 |
0 | 1232 void BacklogItem::SetSavepos(int p) { |
1233 Clear(); | |
1234 scn = SaveSelect; | |
1235 pos = p; | |
1236 } | |
1237 | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1238 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1239 /**************************************************************:: |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1240 ** |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1241 ** TextWindow |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1242 */ |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1243 |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1244 Rect TextWindow::WakuSize(PicContainer& pic, int waku_no) { |
0 | 1245 char key[1024]; |
1246 sprintf(key, "#WAKU.%03d.000.NAME", waku_no); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1247 const char* name = AyuSysConfig::GetInstance()->GetParaStr(key); |
52 | 1248 if (name == NULL) return Rect(0,0,0,0); |
0 | 1249 std::string str = name; str += ".g00"; |
1250 Surface* s = pic.Root().NewSurface(str.c_str()); | |
52 | 1251 if (s == NULL) return Rect(0,0,0,0); |
0 | 1252 Rect r(*s); |
1253 pic.Root().DeleteSurface(s); | |
1254 return r; | |
1255 } | |
52 | 1256 |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1257 void TextWindow::MakeWaku(PicContainer& pic, Event::Container& event, int waku_no, int window_no, bool* use_btn, void* callback) { |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1258 AyuSysConfig *config = AyuSysConfig::GetInstance(); |
0 | 1259 char key[1024]; |
1260 std::string str; | |
1261 /* ÏȤòºîÀ® */ | |
1262 sprintf(key, "#WAKU.%03d.000.NAME", waku_no); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1263 const char* name = config->GetParaStr(key); |
52 | 1264 if (name != NULL && name[0] == 0) name = NULL; |
0 | 1265 sprintf(key, "#WAKU.%03d.000.BACK", waku_no); |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1266 const char* back = config->GetParaStr(key); |
52 | 1267 if (back != NULL && back[0] == 0) back = NULL; |
0 | 1268 sprintf(key, "#WAKU.%03d.000.BTN", waku_no); |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1269 const char* btn = config->GetParaStr(key); |
52 | 1270 if (btn != NULL && btn[0] == 0) btn = NULL; |
0 | 1271 |
52 | 1272 if (name == NULL && back == NULL && btn == NULL) return; |
0 | 1273 |
1274 /* ¤Þ¤º¡¢¥Æ¥¥¹¥ÈÇطʤòÀßÄê */ | |
52 | 1275 if (back != NULL) { |
0 | 1276 str = back; str += ".g00"; |
52 | 1277 int rc, gc, bc, ac, flag; |
0 | 1278 char key[1024]; |
1279 sprintf(key, "#WINDOW.%03d.ATTR", window_no); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1280 if (config->GetParam(key, 5, &rc, &gc, &bc, &ac, &flag) == -1) { |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1281 config->GetParam("#WINDOW_ATTR", 5, &rc, &gc, &bc, &ac, &flag); |
0 | 1282 } |
1283 Surface* back_s = pic.Root().NewSurface(str.c_str()); | |
52 | 1284 if (back_s != NULL) { |
0 | 1285 Rect rect(*back_s); |
1286 Surface* s = pic.Root().NewSurface(rect.width(), rect.height(), ALPHA_MASK); | |
1287 DSurfaceMove(back_s, rect, s, rect); | |
1288 DSurfaceFillA(s, rect, rc, gc, bc, ac); // Æ©ÌÀÅÙÀßÄê | |
1289 pic.SetSurface(s, 0, 0); | |
1290 pic.SetSurfaceFreeFlag(1); | |
1291 if (flag == 0) wid->Pic()->SetSurfaceAttribute(PicBase::BLIT_MULTIPLY); | |
1292 pic.Root().DeleteSurface(back_s); | |
1293 } | |
1294 } | |
1295 /* ¤½¤ÎÁ°¤ËÏȾþ¤ê¤òÀßÄê */ | |
52 | 1296 if (name != NULL) { |
0 | 1297 str = name; str += ".g00"; |
1298 Surface* s = pic.Root().NewSurface(str.c_str()); | |
1299 if (s) { | |
1300 Rect rect(*s); | |
1301 pic.Root().DeleteSurface(s); | |
1302 PicBase* p = pic.create_leaf(Rect(0, 0, rect.width(), rect.height()),0); | |
1303 p->SetSurface(str.c_str(), 0, 0); | |
1304 p->ZMove(ZMOVE_BOTTOM); | |
1305 p->show(); | |
1306 } | |
1307 } | |
52 | 1308 if (btn == NULL) return; |
1309 if (use_btn == NULL) return; | |
0 | 1310 // ¥Ü¥¿¥ó¤ÎºîÀ® |
1311 // »ÈÍѤ¹¤ë¥Ü¥¿¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢É¬Íפ˱þ¤¸¤Æ show() ¤¹¤ë¤³¤È | |
1312 | |
1313 /* ¥Ü¥¿¥ó¤Î°ÌÃÖ¾ðÊó¤òµá¤á¤ë */ | |
1314 str = btn; str += ".g00"; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1315 ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::PDT, str.c_str(), "g00"); |
52 | 1316 if (info == NULL) return; // cannot find file |
0 | 1317 const char* data = info->Read(); |
1318 /* g00 ¥Õ¥¡¥¤¥ë¤Î¥Ø¥Ã¥ÀÉôʬ¤Ë°ÌÃÖ¾ðÊó¤ÏÆþ¤Ã¤Æ¤¤¤ë */ | |
1319 /* ¸ºß¤·¤Ê¤±¤ì¤Ð¥Ü¥¿¥ó²èÁü¤Ç¤Ï¤Ê¤¤ */ | |
52 | 1320 if (data == NULL || *data != 2) { |
0 | 1321 delete info; |
1322 return; | |
1323 } | |
1324 int index_count = read_little_endian_int(data+5); // 0x70 == 112 ( 8 ¸Ä¤º¤Ä¥°¥ë¡¼¥×¤Ê¤Î¤Ç¡¢14¸Ä¤Î¥Ü¥¿¥ó ) ¤¬É¸½à | |
1325 int i; | |
1326 for (i=0; i<BTNCNT; i++) { | |
1327 if (!use_btn[i]) continue; | |
1328 if (btnpos[i]*8 >= index_count) { | |
1329 continue; // ¥Ü¥¿¥ó¤¬Â¸ºß¤·¤Ê¤¤ | |
1330 } | |
1331 int x, y, w, h; | |
1332 sprintf(key, "#WAKU.%03d.000.%s_BOX", waku_no, btnname[i]); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1333 if (config->GetParam(key, 5, 0, &x, &y, &w, &h) == -1) continue; |
0 | 1334 int sx, sy, sdx, sdy, cnt; |
1335 const char* d = data + 9 + btnpos[i]*24*8; | |
1336 sx = read_little_endian_int(d); | |
1337 sy = read_little_endian_int(d+4); | |
1338 sdx = read_little_endian_int(d+24) - sx; | |
1339 sdy = read_little_endian_int(d+24 + 4) - sy; | |
1340 cnt = 2; | |
1341 if (sx+sdx*2 == read_little_endian_int(d+2*24) && sy+sdy*2 == read_little_endian_int(d+2*24+4)) cnt = 3; | |
1342 WidButton* wid = new WidButton(event, &pic, str.c_str(), sx, sy, sdx, sdy, cnt, Rect(x, y, x+w, y+h), 1); | |
1343 if (btnpress[i]) { wid->press_func = btnpress[i]; wid->press_pointer = callback;} | |
1344 if (btndrag[i]) { wid->drag_func = btndrag[i]; wid->drag_pointer = callback;} | |
1345 } | |
1346 delete info; | |
1347 } | |
1348 | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1349 TextWindow::TextWindow(PicContainer& parent, Event::Container& event, int win_no, void* callback) : |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1350 wid(0), name_visible(true),name(0),name_container(0), face(0) |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1351 { |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1352 AyuSysConfig *config = AyuSysConfig::GetInstance(); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1353 int i; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1354 for (i=0; i<8; i++) |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1355 face_pics[i]=0; |
0 | 1356 char key[1024]; |
1357 bool use_btn[BTNCNT]; | |
1358 int size, rep1, rep2, cntw, cnth, mposx, mposy, posd, posx, posy, minx, miny, waku_no, ruby; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1359 sprintf(key, "#WINDOW.%03d.MOJI_SIZE", win_no); if (config->GetParam(key, 1, &size) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1360 sprintf(key, "#WINDOW.%03d.MOJI_REP", win_no); if (config->GetParam(key, 2, &rep1, &rep2) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1361 sprintf(key, "#WINDOW.%03d.MOJI_CNT", win_no); if (config->GetParam(key, 2, &cntw, &cnth) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1362 sprintf(key, "#WINDOW.%03d.POS", win_no); if (config->GetParam(key, 3, &posd, &posx, &posy) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1363 sprintf(key, "#WINDOW.%03d.MOJI_POS", win_no); if (config->GetParam(key, 4, &mposy, NULL, &mposx, NULL) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1364 sprintf(key, "#WINDOW.%03d.MOJI_MIN", win_no); if (config->GetParam(key, 2, &minx, &miny) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1365 sprintf(key, "#WINDOW.%03d.WAKU_SETNO", win_no);if (config->GetParam(key, 1, &waku_no) == -1) return; |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1366 sprintf(key, "#WINDOW.%03d.LUBY_SIZE", win_no); if (config->GetParam(key, 1, &ruby) == -1) return; |
0 | 1367 |
1368 /* ¥Æ¥¥¹¥È¥¦¥£¥¸¥Ã¥È¡§²èÌ̤ᦲ¼°ìÇդޤǻÈÍÑ */ | |
1369 /* posd == 2 ¤Ê¤é²èÌ̲¼¤Ë¤Ò¤Ã¤Ä¤¯¤è¤¦¤ËÇÛÃÖ */ | |
1370 Rect r(0,0); | |
1371 if (posd == 2) { | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1372 r = WakuSize(parent, waku_no); |
0 | 1373 r = Rect(0, parent.Height()-r.height(), r.width(), parent.Height()); |
1374 posx = 0; | |
1375 posy = parent.Height()-r.height(); | |
1376 } else /* posd == 0 ? */ | |
1377 r = Rect(posx, posy, parent.Width(), parent.Height()); | |
1378 | |
1379 /* ¥Æ¥¥¹¥È¥¦¥£¥ó¥É¥¦¤ÎºîÀ® */ | |
1380 int w = size*cntw; int h = (size+ruby+2)*cnth; | |
1381 wid = new WidText(event, &parent, r, Rect(mposx, mposy, mposx+w, mposy+h), size); | |
1382 wid->stream.kanji_type = TextStream::sjis; | |
1383 /* ´é¥¦¥£¥ó¥É¥¦¤ÎºîÀ® */ | |
1384 for (i=0; i<8; i++) { | |
1385 int x,y; | |
1386 sprintf(key, "#WINDOW.%03d.FACE.%03d", win_no, i); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1387 if (config->GetParam(key, 2, &x, &y) == -1) continue; |
0 | 1388 /* ´é¥¦¥£¥ó¥É¥¦¤òºîÀ®¤¹¤ë */ |
1389 if (x >= 0 && y >= 0) { | |
1390 face_pics[i] = wid->PicNode()->create_leaf(Rect(x,y), PicBase::FIT_SURFACE); | |
1391 } else { | |
1392 face_pics[i] = parent.create_leaf(Rect(x+posx,y+posy), PicBase::FIT_SURFACE); | |
1393 } | |
1394 face_pics[i]->show(); | |
1395 } | |
1396 face = face_pics[0]; | |
1397 // ¥Ü¥¿¥ó¤ÎÀßÄê | |
1398 for (i=0; i<BTNCNT; i++) { | |
1399 int num; | |
1400 sprintf(key, "#WINDOW.%03d.%s_USE", win_no, btnname[i]); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1401 config->GetParam(key, 1, &num); |
0 | 1402 use_btn[i] = (num==0) ? false : true; |
1403 } | |
1404 // make name window | |
1405 int shadow, name_mod, name_size, name_min, name_center, name_posx, name_posy, name_mposx, name_mposy; | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1406 sprintf(key, "#WINDOW.%03d.MOJI_SHADOW", win_no); config->GetParam(key, 1, &shadow); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1407 sprintf(key, "#WINDOW.%03d.NAME_MOD", win_no); config->GetParam(key, 1, &name_mod); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1408 sprintf(key, "#WINDOW.%03d.NAME_MOJI_SIZE", win_no); config->GetParam(key, 1, &name_size); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1409 sprintf(key, "#WINDOW.%03d.NAME_MOJI_MIN", win_no); config->GetParam(key, 1, &name_min); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1410 sprintf(key, "#WINDOW.%03d.NAME_MOJI_POS", win_no); config->GetParam(key, 2, &name_mposx, &name_mposy); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1411 sprintf(key, "#WINDOW.%03d.NAME_CENTERING", win_no); config->GetParam(key, 1, &name_center); |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1412 sprintf(key, "#WINDOW.%03d.NAME_POS", win_no); config->GetParam(key, 2, &name_posx, &name_posy); |
0 | 1413 // if name_mode==0 name is in the text window |
1414 // if name_mode == 1 open name window | |
1415 // if name_mode == 2 name is not used | |
1416 if (name_mod) { | |
1417 if (name_mod == 1) { | |
1418 int w = name_size*name_min; int h = name_size; | |
1419 int name_waku; | |
1420 sprintf(key, "#WINDOW.%03d.NAME_WAKU_SETNO", win_no); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1421 if (config->GetParam(key, 1, &name_waku) != -1 && name_waku != -1) { |
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1422 Rect waku_r = WakuSize(parent, name_waku); |
0 | 1423 waku_r.rmove(r.lx, r.ty); // ¥Æ¥¥¹¥È¥¦¥£¥ó¥É¥¦°ÌÃÖ¤ËÆ°¤«¤¹ |
1424 waku_r.rmove(name_posx, name_posy-waku_r.height()); // NAME_POS ¤Ø°ÌÃÖÊäÀµ | |
1425 name_container = parent.create_node(waku_r, 0); | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1426 MakeWaku(*name_container, event, name_waku, win_no, 0, callback); |
0 | 1427 Rect name_r(0,0,w,h); |
1428 name_r.rmove(name_mposx, name_mposy); | |
1429 name = new WidLabel(name_container, name_r, true, 0, name_size); | |
1430 name->show(); | |
1431 } else { // ̾Á°ÀìÍÑÏȤʤ· | |
1432 Rect name_r(0, 0, w, h); | |
1433 name_r.rmove(r.lx, r.ty); | |
1434 name_r.rmove(name_posx, name_posy-name_size); | |
1435 name_container = parent.create_node(name_r, 0); | |
52 | 1436 name = new WidLabel(name_container, Rect(0, 0, w, h), true, 0, name_size); |
0 | 1437 name->show(); |
1438 name_container->show(); | |
1439 } | |
1440 } else { // name_mod == 2 or 3 | |
52 | 1441 name_container = parent.create_node( Rect(0, 0, 1, 1), 0); |
0 | 1442 } |
1443 } | |
53
ddbcbd000206
* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons
thib
parents:
52
diff
changeset
|
1444 MakeWaku(*wid->PicNode(), event,waku_no, win_no, use_btn, callback); |
0 | 1445 } |
52 | 1446 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1447 TextWindow::~TextWindow() |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1448 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1449 if (name_container != NULL) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1450 delete name_container; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1451 name_container = NULL; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1452 } |
43
01aa5ddf7dc8
A lot of very minor improvements (deleted some unused variables, and other things like that...)
thib
parents:
40
diff
changeset
|
1453 int i; |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1454 for (i=0; i<8; i++) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1455 if (face_pics[i] != NULL) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1456 delete face_pics[i]; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1457 face_pics[i] = NULL; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1458 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1459 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1460 if (wid != NULL) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1461 delete wid; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1462 wid = NULL; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1463 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1464 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1465 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1466 void TextWindow::show(void) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1467 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1468 wid->show(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1469 if (name_container != NULL && name_visible) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1470 name_container->show(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1471 if (face != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1472 face->show(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1473 } |
0 | 1474 |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1475 void TextWindow::hide(void) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1476 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1477 wid->hide(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1478 if (name_container != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1479 name_container->hide(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1480 if (face != NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1481 face->hide(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1482 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1483 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1484 void TextWindow::ShowFace(const char* path) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1485 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1486 if (face == NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1487 return; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1488 face->SetSurface(path, 0, 0); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1489 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1490 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1491 void TextWindow::ResetFace(void) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1492 if (face == NULL) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1493 return; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1494 face->SetSurface((Surface*) NULL, 0, 0); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1495 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1496 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1497 void TextWindow::StartText(const TextStream& _stream) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1498 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1499 wid->Clear(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1500 wid->stream = _stream; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1501 if (name_container != NULL) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1502 char namestr[1024]; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1503 namestr[0] = 0; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1504 wid->stream.RemoveName(namestr, 1024); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1505 if (namestr[0] == 0) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1506 name_container->hide(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1507 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1508 else { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1509 if (name != NULL) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1510 name_container->show_all(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1511 name->SetText(namestr); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1512 } |
0 | 1513 } |
1514 } | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1515 wid->Start(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1516 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1517 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1518 void TextWindow::SetName(const char* n) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1519 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1520 if (name_container != NULL && name != NULL) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1521 if (n[0]) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1522 name_container->show(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1523 name->SetText(n); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1524 name_visible = true; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1525 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1526 else { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1527 name_container->hide(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1528 name_visible = false; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1529 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1530 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1531 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1532 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1533 /**************************************************************:: |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1534 ** |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1535 ** SaveFaceHash |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1536 */ |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1537 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1538 void SaveFaceHash::NewNode(string face, int face_id) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1539 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1540 facetonum[face] = face_id; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1541 container.push_front(Node(face, face_id)); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1542 if (container.size() > size_max) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1543 Node remove = container.back(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1544 container.pop_back(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1545 facetonum.erase(remove.first); |
0 | 1546 } |
1547 } | |
56
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1548 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1549 int SaveFaceHash::Add(string face) |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1550 { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1551 int id; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1552 int ret = -1; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1553 int i; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1554 List::iterator it; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1555 if (face.empty()) return -1; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1556 if (facetonum.find(face) == facetonum.end()) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1557 id = ++id_max; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1558 NewNode(face, id); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1559 ret = -1; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1560 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1561 else { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1562 id = facetonum[face]; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1563 for (i=0, it=container.begin(); it != container.end(); i++, it++) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1564 if (it->second == id) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1565 ret = i; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1566 Node n = *it; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1567 container.erase(it); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1568 container.push_front(n); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1569 break; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1570 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1571 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1572 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1573 return ret; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1574 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1575 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1576 string SaveFaceHash::Get(int num) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1577 if (num < 0) return ""; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1578 List::iterator it = container.begin(); |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1579 for (; it != container.end(); it++) { |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1580 if (num == 0) return it->first; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1581 num--; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1582 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1583 return ""; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1584 } |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1585 |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1586 int SaveFaceHash::size_max = 20; |
c7bcc0ec2267
* replaced Grp and Text classes by the TextImpl and GrpImpl ones
thib
parents:
55
diff
changeset
|
1587 |