00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __ALICEML_COMMAND_H__
00028 #define __ALICEML_COMMAND_H__
00029
00030 #include "aliceml.h"
00031 #include "aliceml_font.h"
00032 #include "aliceml_context.h"
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00041 typedef enum ML_CommandType {
00042 ML_COMMANDTYPE_TEXT,
00043 ML_COMMANDTYPE_RUBY,
00044 ML_COMMANDTYPE_NEWLINE,
00045 ML_COMMANDTYPE_NEWPAGE,
00046 ML_COMMANDTYPE_WAIT,
00047 } ML_CommandType;
00048
00052 typedef enum ML_CommandState {
00053 ML_COMMANDSTATE_WAITING,
00054 ML_COMMANDSTATE_SHOWING,
00055 ML_COMMANDSTATE_SHOW,
00056 ML_COMMANDSTATE_HIDING,
00057 ML_COMMANDSTATE_END,
00058 } ML_CommandState;
00059
00066 struct ML_Command {
00067 ML_CommandType type;
00068 ML_CommandState state;
00069 int phese;
00070
00071 union {
00072 struct {
00073 ML_Font *font;
00074 ML_char32 ucs4;
00075 ML_bool horizon;
00077
00078 int x, y;
00079
00080 ML_GlyphMetrics metrics;
00081 ML_bool init_metrics;
00082 } text;
00083
00084 struct {
00085 ML_Font *font;
00086 } newline;
00087
00088 struct {
00089 int wait_time;
00090 } wait;
00091 } u;
00092
00093 struct ML_Command *next;
00094 struct ML_Command *prev;
00095 };
00096
00098 ALICEMLAPI ML_Command * ALICEMLCALL
00099 ML_Command_CreateText(ML_Font *font, ML_char32 ucs4, ML_bool horizon);
00100
00102 ALICEMLAPI ML_Command * ALICEMLCALL
00103 ML_Command_CreateRuby(ML_Font *font, ML_char32 ucs4, ML_bool horizon);
00104
00106 ALICEMLAPI int ALICEMLCALL
00107 ML_Command_InitGlyphMetrics(ML_Command *command, ML_Message *message);
00108
00110 ALICEMLAPI ML_Command * ALICEMLCALL
00111 ML_Command_CreateNewLine(ML_Font *font);
00112
00114 ALICEMLAPI ML_Command * ALICEMLCALL
00115 ML_Command_CreateNewPage();
00116
00118 ALICEMLAPI ML_Command * ALICEMLCALL
00119 ML_Command_CreateWait(int wait_time);
00120
00122 ALICEMLAPI int ALICEMLCALL
00123 ML_Command_Reset(ML_Command *command);
00124
00126 ALICEMLAPI ML_Command * ALICEMLCALL
00127 ML_Command_Clone(ML_Command *command);
00128
00130 ALICEMLAPI void ALICEMLCALL
00131 ML_Command_Destroy(ML_Command *command);
00132
00134 ALICEMLAPI void ALICEMLCALL
00135 ML_Command_Dump(ML_Command *command, FILE *fp);
00136
00138 ALICEMLAPI int ALICEMLCALL
00139 ML_Command_NeedTime(ML_Command *command, ML_Context *context);
00140
00142 ALICEMLAPI int ALICEMLCALL
00143 ML_Command_Begin(ML_Command *command, ML_Context *context);
00144
00146 ALICEMLAPI int ALICEMLCALL
00147 ML_Command_End(ML_Command *command);
00148
00150 ALICEMLAPI int ALICEMLCALL
00151 ML_Command_Update(ML_Command *command, ML_Context *context, int dt);
00152
00154 ALICEMLAPI int ALICEMLCALL
00155 ML_Command_ForceHidingText(ML_Command *command, ML_Context *context);
00156
00158 ALICEMLAPI ML_bool ALICEMLCALL
00159 ML_Command_IsBegin(ML_Command *command);
00160
00162 ALICEMLAPI ML_bool ALICEMLCALL
00163 ML_Command_IsHiding(ML_Command *command);
00164
00166 ALICEMLAPI ML_bool ALICEMLCALL
00167 ML_Command_IsEnd(ML_Command *command, ML_Context *context);
00168
00170 ALICEMLAPI ML_bool ALICEMLCALL
00171 ML_Command_IsShowed(ML_Command *command, ML_Context *context);
00172
00174 ALICEMLAPI ML_bool ALICEMLCALL
00175 ML_Command_IsText(ML_Command *command);
00176
00178 ALICEMLAPI ML_bool ALICEMLCALL
00179 ML_Command_IsNewLine(ML_Command *command);
00180
00182 ALICEMLAPI ML_bool ALICEMLCALL
00183 ML_Command_IsNewPage(ML_Command *command);
00184
00186 ALICEMLAPI ML_bool ALICEMLCALL
00187 ML_Command_IsPause(ML_Command *command);
00188
00189 #ifdef __cplusplus
00190 }
00191 #endif
00192
00193 #endif