Mercurial > otakunoraifu
diff window/widget.cc @ 65:4416cfac86ae
Convert EUC-JP files to UTF8
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Fri, 26 Nov 2010 10:53:15 +0100 |
parents | ddbcbd000206 |
children |
line wrap: on
line diff
--- a/window/widget.cc +++ b/window/widget.cc @@ -142,9 +142,9 @@ MouseCursor::~MouseCursor() { bool MouseCursor::Motionfunc(int x, int y, void* pointer) { MouseCursor* _this = (MouseCursor*)pointer; - // 左上がカーソルポイントの場合 + // 綏筝若純ゃ潟翫 // _this->Pic()->Move(x,y); - // 左下がカーソルポイントの場合 + // 綏筝若純ゃ潟翫 _this->Pic()->Move(x,y-_this->Pic()->Height()); return true; } @@ -196,7 +196,7 @@ void Button::Toggle(bool new_toggle) { return; } is_toggled = new_toggle; - // if (is_in) return; // is_in に関わらずウィジットの表示を変更することにする + // if (is_in) return; // is_in ≪c吾茵腓冴紊眼 if (is_toggled) { if (nptn > 2) Pic()->SetSurfacePos(sx+sdx*2, sy+sdy*2); @@ -252,26 +252,26 @@ extern char* create_box(int& width, int& void Scale::Init(Rect r_orig) { int r=cursor_color.r, g=cursor_color.g, b=cursor_color.b; - // 矢印 + // √ int arrow_width = -1; cursor_width = -1; char* button1; char* button2; if (is_vertical) { - // 矢印に必要な領域確保 + // √違綽荀腆坂 int arrow_height = r_orig.width(); button1 = create_button(2, arrow_height, arrow_width, r, g, b); button2 = create_button(3, arrow_height, arrow_width, r, g, b); if (r_orig.height() < arrow_width*4) { - if (r_orig.height() < 8) r_orig.by = r_orig.ty + 8; // 小さすぎる場合は強制変更 + if (r_orig.height() < 8) r_orig.by = r_orig.ty + 8; // 絨翫綣桁九 free( (void*)button1); free( (void*)button2); arrow_width = r_orig.height()/4; - // 再割り当て + // 蚊綵 button1 = create_button(2, arrow_height, arrow_width, r, g, b); button2 = create_button(3, arrow_height, arrow_width, r, g, b); } - // 矢印ボタンの作成 + // √違帥潟篏 Surface* a1s = parent->Root().NewSurfaceFromRGBAData(arrow_height, arrow_width*3, button1, ALPHA_MASK); int x = r_orig.lx; int y = r_orig.ty; arrow_up = new Button(container, parent, a1s, 0, 0, 0, arrow_width, 3, Rect(x,y,x+arrow_height,y+arrow_width),1); @@ -280,32 +280,32 @@ void Scale::Init(Rect r_orig) { x = r_orig.rx - arrow_height; y = r_orig.by - arrow_width; arrow_down = new Button(container, parent, a2s, 0, 0, 0, arrow_width, 3, Rect(x,y,x+arrow_height,y+arrow_width),1); arrow_down->Pic()->SetSurfaceFreeFlag(); - // picture作成(ボタンの動く領域) + // picture篏鐚帥潟鐚 Rect r = r_orig; r.ty += arrow_width; r.by -= arrow_width; panel = parent->create_node(r, 0); SetPic(panel); - // ボタンの中心線を描画、設定 + // 帥潟筝綽膩祉荐絎 Surface* s = parent->Root().NewSurface(r.width()/2, r.height(), ALPHA_MASK); DSurfaceFill(s, Rect(0,0,r.width()/2,r.height()), 0, 0, 0, 0xff); Pic()->SetSurface(s, -r.width()/4, 0, 0); Pic()->SetSurfaceFreeFlag(); } else { - // 矢印に必要な領域確保 + // √違綽荀腆坂 int arrow_height = r_orig.height(); button1 = create_button(0, arrow_width, arrow_height, r, g, b); button2 = create_button(1, arrow_width, arrow_height, r, g, b); if (r_orig.width() < arrow_width*4) { - if (r_orig.width() < 8) r_orig.rx = r_orig.lx + 8; // 小さすぎる場合は強制変更 + if (r_orig.width() < 8) r_orig.rx = r_orig.lx + 8; // 絨翫綣桁九 free( (void*)button1); free( (void*)button2); arrow_width = r_orig.width()/4; - // 再割り当て + // 蚊綵 button1 = create_button(2, arrow_width, arrow_height, r, g, b); button2 = create_button(3, arrow_width, arrow_height, r, g, b); } - // 矢印ボタンの作成 + // √違帥潟篏 Surface* a1s = parent->Root().NewSurfaceFromRGBAData(arrow_width, arrow_height*3, button1, ALPHA_MASK); int x = r_orig.lx; int y = r_orig.ty; arrow_up = new Button(container, parent, a1s, 0, 0, 0, arrow_height, 3, Rect(x,y,x+arrow_width,y+arrow_height),1); @@ -314,13 +314,13 @@ void Scale::Init(Rect r_orig) { x = r_orig.rx - arrow_width; y = r_orig.by - arrow_height; arrow_down = new Button(container, parent, a2s, 0, 0, 0, arrow_height, 3, Rect(x,y,x+arrow_width,y+arrow_height),1); arrow_down->Pic()->SetSurfaceFreeFlag(); - // picture作成(ボタンの動く領域) + // picture篏鐚帥潟鐚 Rect r = r_orig; r.lx += arrow_width; r.rx -= arrow_width; panel = parent->create_node(r, 0); SetPic(panel); - // ボタンの中心線を描画、設定 + // 帥潟筝綽膩祉荐絎 Surface* s = parent->Root().NewSurface(r.width(), r.height()/2, ALPHA_MASK); DSurfaceFill(s, Rect(0,0,r.width(),r.height()/2), 0, 0, 0, 0xff); Pic()->SetSurface(s, 0, -r.height()/4, 0); @@ -344,14 +344,14 @@ void Scale::InitCursor(int width_ratio) if (width_ratio < 0) width_ratio = 0; else if (width_ratio > 1024) width_ratio = 1024; if (is_vertical) { - if (width_ratio == 0) cursor_width = Pic()->Width() * 3 / 2; // 幅の1.5倍 + if (width_ratio == 0) cursor_width = Pic()->Width() * 3 / 2; // 綛1.5 else cursor_width = Pic()->Height()*width_ratio/1024; - if (cursor_width <= 0) return; // カーソルなし(いいのか?) + if (cursor_width <= 0) return; // 若純鐚鐚鐚 region = Rect(0, 0, Pic()->Width(), cursor_width); } else { // horizontal - if (width_ratio == 0) cursor_width = Pic()->Height() * 3 / 2; // 高さの1.5倍 + if (width_ratio == 0) cursor_width = Pic()->Height() * 3 / 2; // 蕭1.5 else cursor_width = Pic()->Width()*width_ratio/1024; - if (cursor_width <= 0) return; // カーソルなし(いいのか?) + if (cursor_width <= 0) return; // 若純鐚鐚鐚 region = Rect(0, 0, cursor_width, Pic()->Height()); } @@ -368,7 +368,7 @@ void Scale::InitCursor(int width_ratio) cursor->drag_pointer = (void*)this; cursor->show(); - // 矢印等をクリックしたときの移動量計算 + // √亥腱糸頥膊 int bar_width; if (is_vertical) bar_width = Pic()->Height(); else bar_width = Pic()->Width(); @@ -479,7 +479,7 @@ TextButton::TextButton(Event::Container& fore(_fore), pressed(_pressed), back(_back) { bool rect_changed = false; - // まず、テキスト領域の広さを得る + // 障鴻綺緇 Rect r(r_orig); if (text == NULL) text = ""; @@ -489,7 +489,7 @@ TextButton::TextButton(Event::Container& TextStream ts = TextStream::ParseMoji(text, _fore.r , _fore.g, _fore.b, text_size); TextGlyphStream gs = DefaultLayout(text_size)->Layout(ts, width); - if (r.width() == 0) { // 文字に合わせてウィジット作成 + if (r.width() == 0) { // 絖c吾篏 rect_changed = true; width = gs.width() + text_size; r.rx = r.lx + gs.width(); @@ -502,7 +502,7 @@ TextButton::TextButton(Event::Container& } if (rect_changed) { - // 大きさ変更 + // 紊с紊 Pic()->SetSurfaceRect(r); } @@ -515,7 +515,7 @@ TextButton::TextButton(Event::Container& y = (Pic()->Height() - gs.height()) / 2; //FIXME: (back.a == NULL ?) - if (back.a == 0) { // 背景なし、もしくはボタン押の状態のみ背景あり + if (back.a == 0) { // 帥恰若倶粋 surface = root.NewSurface(r.width(), r.height()*2, ALPHA_MASK); DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0); if (attribute & REVERSE) { @@ -532,8 +532,8 @@ TextButton::TextButton(Event::Container& DSurfaceRenderText(gs.begin(), gs.end(), Rect(0,0,gs.width(),gs.height()), surface, Rect(x,y+r.height())); } nptn = 2; - } else { // ボタン型の背景あり - /* ラベル用の Surface を作る */ + } else { // 帥喝 + /* Surface 篏 */ width = r.width(); height = r.height(); char* box = create_box(width, height, back.r, back.g, back.b); surface = root.NewSurfaceFromRGBAData(r.width(), r.height()*3, box, ALPHA_MASK); @@ -558,7 +558,7 @@ TextButton::TextButton(Event::Container& void TextButton::SetText(const char* text, const Color& _fore, const Color& _pressed, const Color& _back) { int width = Pic()->Width(); int height = Pic()->Height(); - // まず、テキスト領域の広さを得る + // 障鴻綺緇 if (text == NULL) text = ""; TextGlyphStream gs = DefaultLayout(text_size)->Layout(text, width); @@ -575,7 +575,7 @@ void TextButton::SetText(const char* tex surface = NULL; //FIXME: (back.a == NULL) ? - if (back.a == 0) { // 背景なし + if (back.a == 0) { // surface = root.NewSurface(width, height*2, ALPHA_MASK); DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0); if (attribute & REVERSE) { @@ -589,7 +589,7 @@ void TextButton::SetText(const char* tex gs.SetReverse(false); nptn = 2; } else { - /* ラベル用の Surface を作る */ + /* Surface 篏 */ char* box = create_box(width, height, _back.r, _back.g, _back.b); surface = root.NewSurfaceFromRGBAData(width, height*3, box, ALPHA_MASK); @@ -701,7 +701,7 @@ label_wait: cursor_activated = false; if (cursor) cursor->hide(); while(cur_pos != gstream.end()) { - // スクロールしては次行描画、を繰り返す + // 鴻若罨∴祉膵違菴 for (scroll_height = CalcScrollHeight(); scroll_height > 0; scroll_height--) { status = SCROLL; label_scroll: @@ -763,7 +763,7 @@ void Text::Start(void) { bottom_pos.clear(); layout.Layout(stream, gstream, bottom_pos, pictext->Width()-fontsize/2); - // height の積算値として bottom_pos を計算 + // height 腥膊ゃ bottom_pos 荐膊 std::vector<int>::iterator it; int pos = 0; for (it = bottom_pos.begin(); it != bottom_pos.end(); it++) { @@ -783,13 +783,13 @@ void Text::Start(void) { } void Text::DrawText(int& nChar) { - // 描画範囲を得る + // 紫蚊緇 iterator end = gstream.end(); iterator it = cur_pos; - while(nChar && it != end) { // nChar < 0 なら出来るだけの文字を描画 + while(nChar && it != end) { // nChar < 0 堺ャ絖 if (! (it->flag & TextGlyph::Group)) nChar--; if (it->flag & TextGlyph::LineEnd) { - if (bottom_pos[line_number+1] > srcrect.by) { //改行すると画面から出てしまう + if (bottom_pos[line_number+1] > srcrect.by) { //壕脂≪冴障 it++; if (nChar == 0) nChar = 1; break; @@ -798,14 +798,14 @@ void Text::DrawText(int& nChar) { } it++; } - // 描画する + // 祉 Rect r = DSurfaceRenderText(cur_pos, it, srcrect, surface, Rect(0,0,0,0)); pictext->ReBlit(r); cur_pos = it; } void Text::Scrollup(int& nChar) { - if (nChar < 0) { // 一画面分スクロールする + if (nChar < 0) { // 筝脂√鴻若 DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0); pictext->ReBlit(); srcrect = Rect(*surface); @@ -814,7 +814,7 @@ void Text::Scrollup(int& nChar) { scrolled_count = 0; return; } - // スクロール幅を求める + // 鴻若綛羆 const int max_scroll_count = 8; int dy = bottom_pos[line_number+1] - bottom_pos[line_number]; int cur_dy; @@ -873,7 +873,7 @@ Label::Label(PicContainer* parent, const TextGlyphStream gs = DefaultLayout(text_size)->Layout(text, width); - if (r.width() == 0) { // 文字に合わせてウィジット作成 + if (r.width() == 0) { // 絖c吾篏 width = gs.width(); r.rx = r.lx + gs.width(); } @@ -883,7 +883,7 @@ Label::Label(PicContainer* parent, const SetPic(parent->create_leaf(r, 0)); - /* ラベル用の Surface を作る */ + /* Surface 篏 */ surface = parent->Root().NewSurface(r.width(), r.height(), ALPHA_MASK); DSurfaceFill(surface, Rect(*surface), 0, 0, 0, 0); @@ -927,18 +927,18 @@ Dialog::Dialog(Event::Container& contain XKFont::HorizLayout& layout = *DefaultLayout(26); int dialog_width = parent->Width() / 2; - TextGlyphStream s_ok = layout.Layout("OK", dialog_width); - TextGlyphStream s_cancel = layout.Layout("取消", dialog_width); + TextGlyphStream s_ok = layout.Layout("鐚鐚", dialog_width); + TextGlyphStream s_cancel = layout.Layout("羔", dialog_width); TextGlyphStream s_text = layout.Layout(text, dialog_width); Rect r_text(0, 0, s_text.width(), s_text.height()); Rect r_ok(0, 0, s_ok.width(), s_ok.height()); Rect r_cancel(0, 0, s_cancel.width(), s_cancel.height()); - /* ダイアログボックスの Surface を作る */ + /* ゃ≪違鴻 Surface 篏 */ int dwidth = r_text.width() + (r_text.width()/10)*2 + 6; int dheight = r_text.height() + r_ok.height() + r_cancel.height()*3 + 4; - surface_diag = parent->Root().NewSurface(dwidth, dheight, NO_MASK); // alpha なし + surface_diag = parent->Root().NewSurface(dwidth, dheight, NO_MASK); // alpha DSurfaceFill(surface_diag, Rect(*surface_diag), 0xf0, 0xd0, 0xa0); DrawBox(surface_diag, Rect(0,0,dwidth,dheight)); @@ -950,20 +950,20 @@ Dialog::Dialog(Event::Container& contain parent->Root().BlitSurface(surface_text, r_text, surface_diag, Rect(x, y, x+r_text.width(), y+r_text.height())); parent->Root().DeleteSurface(surface_text); - /* panel をつくる */ + /* panel ゃ */ x = (parent->Width()-dwidth)/2; y = (parent->Height()-dheight)/2; SetPic(parent->create_node(Rect(x, y, x+dwidth, y+dheight), 0)); - /* ボタンを作成する */ - /* f8d8c8 背景(明)*/ - /* f0d0a0 背景*/ - /* b08040 枠(明)*/ - /* 805010 枠*/ - /* 382018 黒*/ - /* 9890f8 青*/ - /* dc6448 赤*/ - /* 各ボタンは左右にボタン幅の 1/4, 上下にボタン幅の 1/4 のマージンを持つ */ + /* 帥潟篏 */ + /* f8d8c8 ()*/ + /* f0d0a0 */ + /* b08040 鐚)*/ + /* 805010 */ + /* 382018 藥*/ + /* 9890f8 */ + /* dc6448 莎*/ + /* 帥潟綏劻帥喝 1/4, 筝筝帥喝 1/4 若吾潟 */ Rect r_btn(r_ok); r_btn.join(r_cancel); int btn_width = r_btn.width() * 3 / 2; int btn_height = r_btn.height() * 3 / 2; @@ -1184,8 +1184,8 @@ void AnmAlphaMove::Exec(int count) { if (ptns.empty()) return; if (cur_count != 0 && ptns[cur_count].next_tick > count) return; if (cur_count >= ptns.size()) return; - // 次のパターンを探す - // count <= it->next_tick なる条件を満たす最後の it を探す + // 罨<帥若潟「 + // count <= it->next_tick >散羣緇 it 「 std::vector<Ptn>::iterator it; for (it=ptns.begin()+cur_count; it != ptns.end(); it++) { if (count <= it->next_tick) break; @@ -1212,7 +1212,7 @@ void AnmAlphaMove::Finish(void) { if (ptns.empty()) return; if (cur_count >= ptns.size() - 1) return; cur_count = ptns.size() - 1; - Exec(ptns[cur_count].next_tick); // 最後の pattern の状態にする + Exec(ptns[cur_count].next_tick); // 緇 pattern 倶 } AnmPtnSolid::AnmPtnSolid(Event::Container& container, PicBase* _pic, const unsigned char* _ptn, const Rect& _alpha_r, int total_time) : @@ -1288,68 +1288,68 @@ void AnmPtnAlpha::Finish(void) { /* -Widget の種類 - Mouse: マウス位置に連動する。Surface と origin が必須 - Panel : なにも存在しないところに張りつけていく - 背景張りつけも可能 - ButtonPanel : 無効化可能。Group の Button がカーソルに入ったら、全Button / Label が「カーソル下」状態になる - 同一変数を扱うボタンは原則、同一ButtonPanel の下に入ること(同期する。高速化可能) - そうでない場合、ボタンの GlobalVariable フラグを立てる必要がある - 背景種類:Window - 内部の透明度と枠形を別々に指定可能。枠形は全枠、部分枠どちらの形でも可能 - (部分枠なら、内部的には上枠、下枠、左右枠と別 Surface で管理する) +Widget 腮蕁 + Mouse: 剛臀eSurface origin 綽 + Panel : 絖綣泣ゃ + 綣泣ゃ + ButtonPanel : ≦劫純Group Button 若純ャcButton / Label 若純筝倶 + 筝紊違宴帥潟筝ButtonPanel 筝ャ鐚蕭緒 + с翫帥潟 GlobalVariable 違腴綽荀 + 腮蕁鐚Window + 綺綵≪ャ絎純綵≪<綵≪с + 鐚筝筝綏勄 Surface х∞鐚 DragButton - Panel 全体をドラッグし、場所変更できるボタン。 - Button: 無効化>通常>カーソル下>ボタン押下 のpicture / animation - Toggle Button にできる(Group化すればRadioButtonにもできる) - Label : 無効化>通常>カーソル下 のanimation - animation は - ・上への変化 - ・下への変化 - ・常時変形 - の3つの形式をもつ。 - 形式は - ・x / y increment による(全領域と x,y の大きさを指定すると左上から右上、左下、という方へ勝手に領域を変更していく) - ・色変化(明度変化)。色テーブルを指定する。Surface は alpha のみとする - どちらも、一つのラベルに使う時間の長さを指定する - ・callback による。指定した一定時間以上が立つとCallBack が呼び出され、新たなSurface , origin を指定する。 + Panel 篏違贋紊眼с帥潟 + Button: ≦劫鐚絽醐若純筝鐚帥恰寂 picture / animation + Toggle Button с(GroupRadioButtonс) + Label : ≦劫鐚絽醐若純筝animation + animation + 私吾紊 + 私吾紊 + 糸幻紊綵 + 鐚ゃ綵√ゃ + 綵√ + x / y increment 鐚 x,y 紊с絎綏筝劽綏筝鴻後紊眼鐚 + 肢峨鐚綺紊鐚蚊若絎Surface alpha 帥 + <筝ゃ篏帥激絎 + callback 絎筝絎篁ヤ腴ゃCallBack 若喝冴違Surface , origin 絎 - ・Surface は - 普通の画像 - 文字列(適当に仮想化) - 画像数値列 - のいずれか + Surface + 糸 + 絖鐚綵篁喝鐚 + 糸医ゅ + Cursor - リターンカーソル。Label の一種。 + 帥若潟若純Label 筝腮 Number - 数字を表示する。フォントの大きさ、もしくは画像数値列 + 医茵腓冴潟紊с糸医ゅ Text - テキストを表示する - パネルの大きさだけ指定すると適当にやってくれる - カーソルの位置(文字の次/最終)を指定すること - 機能:文字送り速度設定、読み飛ばし設定(常に最高速で押しっぱなし) - ProgressBar など - バーの長さ、あるいは位置で変数の大きさを示す。 - Tick, Max を指定、変数の変化には適当に対応できるようにする - バーの方向として縦/横。Surface は繰り返しで使う(速度上、32pixel くらいあったほうがいいかも?) - バーの代わりにボタンも使える。Surface 指定のメソッドが違うだけ。 - オプション:バーのどこかをクリックされたとき、そこに移動するかそこに向かって移動するか - オプション?:矢印ボタン(いらないか) + 鴻茵腓冴 + 紊с絎綵c + 若純篏臀鐚絖罨/腟鐚絎 + 罘緒絖綺荐絎茯翠違荐絎鐚絽吾蕭ф若c宴鐚 + ProgressBar + 若激篏臀у違紊с腓冴 + Tick, Max 絎紊違紊綵絲上с + 若劫膰/罔Surface 膵違菴т戎鐚綺筝32pixel c祉鐚鐚 + 若篁c帥潟篏帥Surface 絎<純 + 激с鰹若腱糸c腱糸 + 激с鰹鐚√違帥鰹鐚 ScrollBar - 横/縦。Panel と連動する(専用, ProgressBar の一種として実装) - (Panel 側で「見えない部分はdelete, 見える部分は自動で作成」機能をつける?:バックログ) + 罔/膰Panel e(絨, ProgressBar 筝腮絎茖) + (Panel 眼с荀delete, 荀т罘純ゃ鐚鐚逸 -メニューの出し方 - 右クリック - ボタンを押す - 上の方、右の方など領域に行くとヌっと出てくる -メニューモード内 - ボタンを押して終了 - マップを作っておき、各メニューに名前を割り振ると二次元に広がったメニューになる - 名前を割り振ると上に名前リストがでてくる - 名前を割り振ると横に名前リストが出てくる +<ャ若冴 + 劻 + 帥潟若 + 筝鴻劻鴻茵c冴 +<ャ若≪若 + 帥潟若腟篋 + 篏c<ャ若蚊篋罨≦綺c<ャ若 + 蚊筝鴻с + 蚊罔鴻冴 */ // }