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));