Mercurial > otakunoraifu
diff window/picture.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 | e16e13d8cd68 |
children | 1fd20d231376 |
line wrap: on
line diff
--- a/window/picture.cc +++ b/window/picture.cc @@ -45,7 +45,7 @@ using namespace std; void DSurfaceBlitAlpha(Surface* src_o, const Rect& srcrect_o, Surface* dst_o, const Rect& dstrect_o, const unsigned char* alpha, const Rect& alpharect); void DSurfaceBlitAdd(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect, unsigned char alpha); void DSurfaceBlitMultiply(Surface* src_o, const Rect& srcrect, Surface* dst_o, const Rect& dstrect); -void DSurfaceFill(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // ꥢ +void DSurfaceFill(Surface* src, const Rect& rect, int r, int g, int b, int a=0xff); // クリア #if 0 /* DEBUG */ #include<sys/types.h> #include<sys/time.h> @@ -101,11 +101,11 @@ PicBase::~PicBase() { if (surface_own != NULL && (attribute & SURFACE_FREE)) root->DeleteSurface(surface_own); if (surface_alpha != NULL && (attribute & ALPHA_FREE)) delete surface_alpha; iterator it; - if (parent) { // ʬƤ + if (parent) { // 自分を親から削除 parent->children.remove(this); - // root update 鼫ʬ + // root の update 情報から自分を削除 parent->Root().DeleteUpdatePic(this); - // ʬΰľ + // 自分の領域を書き直す Rect old_ppos = rel_pos; parent->QueryAbsPos(old_ppos); parent->ReBlit(old_ppos); @@ -113,9 +113,9 @@ PicBase::~PicBase() { } void PicBase::Blit(const Rect& rpos_orig) { - // ºݤ褹ΰ + // 実際に描画する領域を得る Rect rpos = rpos_orig; - // widgetꤵ줿clip area ꤹ + // 親widget上に設定されたclip area 内に描画を限定する if (clip_area.width() != 0) { Rect clip = clip_area; clip = child_pos(clip, this); @@ -123,7 +123,7 @@ void PicBase::Blit(const Rect& rpos_orig } Rect apos = QueryAbsPos(rpos); if (rpos.empty()) return; - // ɬפ˱¸ + // 必要に応じて保存、描画 if (attribute & CACHE_BACK) root->BlitSurface(root->surface, apos, surface_back, rpos); if (! (attribute & NO_PICTURE)) { rpos.rmove(surface_x, surface_y); @@ -134,7 +134,7 @@ void PicBase::Blit(const Rect& rpos_orig //if (apos.ty < 200) fprintf(stderr,"Blit: %p : (%d,%d,%d,%d) -> (%d,%d,%d,%d)\n",surface_own,rpos_orig.lx,rpos_orig.ty,rpos_orig.rx,rpos_orig.by,apos.lx,apos.ty,apos.rx,apos.by); root->BlitSurface(surface_own, rpos, surface_alpha, surface_alpha_rect, root->surface, apos, attribute); rpos.rmove(-surface_x, -surface_y); - } else if (parent == 0) { // ƤʤʤطʾõǤ + } else if (parent == 0) { // 親がいないなら背景消去の責任をもつ DSurfaceFill(root->surface, apos, 0, 0, 0); } PicContainer* cur = dynamic_cast<PicContainer*>(this); @@ -144,7 +144,7 @@ void PicBase::Blit(const Rect& rpos_orig } void PicBase::SimpleBlit(Surface* screen) { - // ºݤ褹ΰ + // 実際に描画する領域を得る Rect rpos(0, 0, rel_pos.width(), rel_pos.height()); Rect apos = QueryAbsPos(rpos); if (rpos.empty()) return; @@ -162,7 +162,7 @@ Rect PicBase::QueryAbsPos(Rect& rpos) { if (parent == NULL) { // root container return rpos; } - // ƤκɸѴ塢Query + // 親の座標に変換後、Query する Rect ppos = parent_pos(rpos); Rect apos = parent->QueryAbsPos(ppos); rpos = child_pos(ppos, this); @@ -200,14 +200,14 @@ void PicBase::ZMove(PicBase* move_to) { fprintf(stderr,"Error: PicBase::ZMove was called with a no-brother picture\n"); return; } - // move_to zpos Τ picture ʤɬפ + // move_to と zpos のうち、後ろの方の picture から書きなおす必要がある iterator redraw_zpos = z_pos; redraw_zpos++; - if (move_to == ZMOVE_BOTTOM) { // ̤ + if (move_to == ZMOVE_BOTTOM) { // 最背面へ parent->children.erase(z_pos); parent->children.push_front(this); z_pos = parent->children.begin(); redraw_zpos = parent->children.begin(); - } else if (move_to == ZMOVE_TOP) { // ̤ + } else if (move_to == ZMOVE_TOP) { // 最前面へ redraw_zpos = z_pos; redraw_zpos++; parent->children.erase(z_pos); parent->children.push_back(this); @@ -224,7 +224,7 @@ void PicBase::ZMove(PicBase* move_to) { if (! is_hidden_now) { is_cached = false; ReBlit(); - /* @@@ parent->Blit() Blit() ΰ㤤ʬʤΤǽ 06/12/02 + /* @@@ parent->Blit() と Blit() の違いが分からないので修正 06/12/02 Rect ppos = rel_pos; parent->QueryAbsPos(ppos); parent->ReBlit(ppos); @@ -272,16 +272,16 @@ bool PicBase::IsParent(PicBase* to) { } void PicBase::show(void) { - /* ʬοƤ٤ shown */ + /* 自分の親がすべて shown か? */ PicContainer* cur; for (cur = parent; cur != 0; cur = cur->parent) if (cur->is_hidden) break; - if (cur != NULL) { // ƤƤΤɽϤʤ + if (cur != NULL) { // 親が隠れているので表示はしない is_hidden = false; is_hidden_now = true; return; } - if (is_hidden == false) return; // ǤɽƤΤǤʤˤ⤷ʤ + if (is_hidden == false) return; // すでに表示されているのでなにもしない if (widget != NULL) { widget->activate(); } @@ -330,8 +330,8 @@ void PicBase::SetSurfaceColorKey(int r, void PicBase::SetSurfaceAlphaFile(const char* file) { - /* ե alpha */ - /* ե롧 ѥե 'fil' ե */ + /* ファイルを元に alpha 画像を作成する */ + /* ファイル: パルフェの 'fil' ファイル */ ARCINFO* info = FileSearcher::GetInstance()->Find(FileSearcher::PDT, file,"fil"); if (info == NULL) return; char* new_alpha = info->CopyRead(); @@ -349,7 +349,7 @@ err_ret: h = sr.height(); if (alpha_size < w*h) goto err_ret; int i,j; - if ( ((SDL_Surface*)surface_own)->format->Amask == 0) { // mask surface ˷ + if ( ((SDL_Surface*)surface_own)->format->Amask == 0) { // mask を surface に繰り込む Surface* dest = root->NewSurface(w,h, ALPHA_MASK); for (i=0; i<h; i++) { char* a = new_alpha + w*i; @@ -371,8 +371,8 @@ err_ret: root->DeleteSurface(surface_own); surface_own = dest; SetSurfaceAlpha(0, Rect(0,0)); - } else { // ˥ޥ - /* ޥΤ0xff Ǥ٤ʬȽ̡ѹ */ + } else { // 外部にマスク作成 + /* マスクのうち、0xff であるべき部分を画像から判別、変更する */ for (i=0; i<h; i++) { char* a = new_alpha + w*i; char* s = (char*)((SDL_Surface*)surface_own)->pixels + ((SDL_Surface*)surface_own)->pitch*i; @@ -406,7 +406,7 @@ void PicBase::SetSurface(Surface* new_su surface_h = -1; if (attribute & FIT_SURFACE) { - // surface 礭˼ʬ礭ѹ + // surface の大きさに自分の大きさを変更 parent->ReBlit(rel_pos); if (surface_own == 0) { rel_pos = Rect(rel_pos.lx, rel_pos.ty); @@ -488,7 +488,7 @@ PicContainer::~PicContainer() { iterator end = children.end(); for (iterator it = children.begin(); it != end; ) { iterator it_next = it; it_next++; - if ((*it)->widget != NULL) delete (*it)->widget; // picture widget °Ƥʤ顢delete + if ((*it)->widget != NULL) delete (*it)->widget; // picture にwidget が付属しているなら、そちらをdelete else delete (*it); it = it_next; } @@ -502,16 +502,16 @@ void PicContainer::BlitBack(iterator z, Rect ppos = parent_pos(rpos); if (is_hidden_now) goto parent_redraw; - // cache Ƥΰõ - // zȤå夷ƤСǽλ + // cache されている領域を探す + // z自身がキャッシュしていれば、ここで終了 if ( ((*z)->attribute & CACHE_BACK) && ( (*z)->is_cached) && (*z)->rel_pos.is_inner(rpos)) { Rect cpos = child_pos(rpos, *z); Rect apos = (*z)->QueryAbsPos(cpos); root->BlitSurface( (*z)->surface_back, cpos, root->surface, apos); return; } - // z 겼λҤå塢뤤 SOLID Ǥʤ - for (it = z; it != begin;) { // ҤcontainerξΥåϾά + // z より下の子がキャッシュ、あるいは SOLID 描画できないか? + for (it = z; it != begin;) { // 子がcontainerの場合のチェックは省略 it--; if ( (*it)->is_hidden_now) continue; if ( (*it)->rel_pos.is_crossed(rpos)) { @@ -526,7 +526,7 @@ void PicContainer::BlitBack(iterator z, } } } - // ʬȤå塢뤤 SOLID Ǥʤ + // 自分自身がキャッシュ、あるいは SOLID 描画できないか? if (rel_solid_area.is_inner(ppos)) { goto self_redraw; } @@ -544,7 +544,7 @@ parent_redraw: } if (is_hidden_now) return; self_redraw: - BlitSelf(rpos); // Ҥ褻ʬ + BlitSelf(rpos); // 子は描画せず、自分だけ描画 children_redraw: for (; it != z; it++) { if ( (*it)->is_hidden_now) continue; @@ -586,11 +586,11 @@ void PicContainer::BlitFront(iterator z, } void PicContainer::BlitSelf(Rect rpos) { - // ºݤ褹ΰ + // 実際に描画する領域を得る rpos.intersect(Rect(0, 0, rel_pos.width(), rel_pos.height())); if (rpos.empty()) return; Rect apos = QueryAbsPos(rpos); - // ɬפ˱¸ + // 必要に応じて保存、描画 if (attribute & CACHE_BACK) root->BlitSurface(root->surface, apos, surface_back, rpos); if (! (attribute & NO_PICTURE)) { rpos.rmove(surface_x, surface_y); @@ -600,7 +600,7 @@ void PicContainer::BlitSelf(Rect rpos) { rpos.intersect(clip); } root->BlitSurface(surface_own, rpos, surface_alpha, surface_alpha_rect, root->surface, apos, attribute); - } else if (parent == NULL) { // ƤʤʤطʾõǤ + } else if (parent == NULL) { // 親がいないなら背景消去の責任をもつ DSurfaceFill(root->surface, apos, 0, 0, 0); } } @@ -628,7 +628,7 @@ void PicContainer::set_nowhiddenflag(boo } } -void PicContainer::RMove(int add_x, int add_y) { // event widget ΰưΤǻҤˤĤƤRMoveƤӽФ +void PicContainer::RMove(int add_x, int add_y) { // event widget の移動があり得るので子についてもRMoveを呼び出す PicBase::RMove(add_x, add_y); iterator end = children.end(); for (iterator it = children.begin(); it != end; it++) { @@ -724,7 +724,7 @@ class FileToSurface { FileToSurface::FileToSurface(const PicRoot& _root) : root(_root) { count = 0; - count_max = 32; // å̡ʷǤ + count_max = 32; // キャッシュ量(決め打ち) }; FileToSurface::~FileToSurface() { @@ -761,7 +761,7 @@ inline Surface* FileToSurface::LoadSurfa Surface* s = NULL; if (conv->Read(mem)) { MaskType is_mask = conv->IsMask() ? ALPHA_MASK : NO_MASK; - if (is_mask == ALPHA_MASK) { // alpha ٤ 0xff ʤޥ̵Ȥ + if (is_mask == ALPHA_MASK) { // alpha がすべて 0xff ならマスク無しとする int len = conv->Width()*conv->Height(); unsigned int* d = (unsigned int*)mem; int i; for (i=0; i<len; i++) { @@ -787,12 +787,12 @@ Surface* FileToSurface::Load(string name Surface* surface = LoadSurface(name, mem); if (surface == NULL) return NULL; - while (count >= count_max) { // count_max ʾΥǡǽʤ + while (count >= count_max) { // count_max 以上のデータを可能なら削除する qiterator it; for (it=queue.begin(); it != queue.end(); it++) { if (DeleteData(*it)) break; } - if (it == queue.end()) break; // ǡʤ齪λ + if (it == queue.end()) break; // 全データが使用中なら終了 } SurfaceIndex* new_index = new SurfaceIndex; new_index->filename = name; @@ -849,7 +849,7 @@ PicRoot::PicRoot(void) { } PicRoot::~PicRoot() { - // if (surface) DeleteSurfaceImpl(surface); // SDL_GetVideoSurface() surface ϳɬפʤ餷 + // if (surface) DeleteSurfaceImpl(surface); // SDL_GetVideoSurface() した surface は開放の必要がないらしい surface = NULL; delete root; delete ftosurface; @@ -877,7 +877,7 @@ void PicRoot::DeleteUpdatePic(PicBase* p } void PicRoot::ExecUpdate(void) { - /* ̤ΰõ */ + /* 共通する領域を消去する */ sort(update_rects.begin(), update_rects.end(), UpdateItem::less); vector<UpdateItem>::iterator it; vector<UpdateItem>::iterator end = update_rects.end(); @@ -891,12 +891,12 @@ void PicRoot::ExecUpdate(void) { vector<UpdateItem>::iterator jt = it; jt++; for (; jt != end; jt++) { if (apos.is_inner(jt->apos)) { - if (jt->pic == pic || jt->pic->IsParent(pic)) { // Ƥ̡ΰⶦ - jt->rpos = Rect(0,0); // empty rect å + if (jt->pic == pic || jt->pic->IsParent(pic)) { // 親が共通、かつ領域も共通 + jt->rpos = Rect(0,0); // empty rect をセット jt->apos = Rect(0,0); } - } else if (jt->apos.is_inner(apos)) { // ˼ʬޤ - if (jt->pic == pic || jt->pic->IsParent(pic)) { // Ƥ̡ΰⶦ + } else if (jt->apos.is_inner(apos)) { // 相手に自分が包含される + if (jt->pic == pic || jt->pic->IsParent(pic)) { // 親が共通、かつ領域も共通 it->rpos = Rect(0,0); it->apos = Rect(0,0); break; @@ -955,7 +955,7 @@ Surface* PicRoot::NewSurface(const char* if (with_mask == COLOR_MASK) { SDL_SetColorKey( (SDL_Surface*)s, SDL_SRCCOLORKEY, *(Uint32*)s->pixels); } - /* xkanon λij */ + /* xkanon の残骸 */ if (strcmp(f, "grdat") == 0) SDL_SetColorKey(s, SDL_SRCCOLORKEY, 0x55aa66); return s; @@ -1039,7 +1039,7 @@ bool PicRoot::with_mask(Surface* s) { void PicRoot::SetWindowCaption(const char* caption) { #if USE_X11 // SDL_WM_SetCaption(caption, 0); - // SDLδؿǤ2ХʸݡȤƤʤΤǡƱƤ˽ + // SDLの関数では2バイト文字をサポートしてくれないので、同等の内容に修正 SDL_SysWMinfo info; memset(&info,0,sizeof(info)); SDL_VERSION(&(info.version));