[Ttssh2-commit] [5570] チケット #33694

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2014年 4月 20日 (日) 19:45:53 JST


Revision: 5570
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5570
Author:   yutakapon
Date:     2014-04-20 19:45:52 +0900 (Sun, 20 Apr 2014)
Log Message:
-----------
チケット #33694
Eterm look-feelの背景画像指定において、JPEGファイルが正しく描画されないことが
ある問題に対処した。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/33694

Modified Paths:
--------------
    trunk/teraterm/teraterm/vtdisp.c

-------------- next part --------------
Modified: trunk/teraterm/teraterm/vtdisp.c
===================================================================
--- trunk/teraterm/teraterm/vtdisp.c	2014-04-14 04:29:55 UTC (rev 5569)
+++ trunk/teraterm/teraterm/vtdisp.c	2014-04-20 10:45:52 UTC (rev 5570)
@@ -177,9 +177,29 @@
 BOOL (FAR WINAPI *BGAlphaBlend)(HDC,int,int,int,int,HDC,int,int,int,int,BGBLENDFUNCTION);
 BOOL (FAR WINAPI *BGEnumDisplayMonitors)(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
 
+static HBITMAP GetBitmapHandle(char *File);
 
+
 //\x95֗\x98\x8A֐\x94\x81\x99
 
+// LoadImage() \x82\xB5\x82\xA9\x8Eg\x82\xA6\x82Ȃ\xA2\x8A‹\xAB\x82\xA9\x82ǂ\xA4\x82\xA9\x82𔻕ʂ\xB7\x82\xE9\x81B
+// LoadImage()\x82ł\xCD .bmp \x88ȊO\x82̉摜\x83t\x83@\x83C\x83\x8B\x82\xAA\x88\xB5\x82\xA6\x82Ȃ\xA2\x82̂ŗv\x92\x8D\x88ӁB
+// (2014.4.20 yutaka)
+static BOOL IsLoadImageOnlyEnabled(void)
+{
+	OSVERSIONINFO osvi;
+
+	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+	GetVersionEx(&osvi);
+	// Vista \x96\xA2\x96\x9E\x82̏ꍇ\x82ɂ́A\x8D\xA1\x82܂Œʂ\xE8\x82̓ǂݍ\x9E\x82݂\xF0\x82\xB7\x82\xE9\x82悤\x82ɂ\xB5\x82\xBD
+	// cf. SVN#4571(2011.8.4)
+	if (osvi.dwMajorVersion < 6) {
+		return TRUE;
+	}
+	return FALSE;
+}
+
+
 void dprintf(char *format, ...)
 {
   va_list args;
@@ -612,10 +632,17 @@
 
   GlobalFree(fileBuf);
 
-  //\x89摜\x82\xF0\x83r\x83b\x83g\x83}\x83b\x83v\x82Ƃ\xB5\x82ēǂݍ\x9E\x82\xDD
+  if (IsLoadImageOnlyEnabled()) {
+    //\x89摜\x82\xF0\x83r\x83b\x83g\x83}\x83b\x83v\x82Ƃ\xB5\x82ēǂݍ\x9E\x82\xDD
+    hbm = LoadImage(0,src->file,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
 
-  hbm = LoadImage(0,src->file,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
+  } else {
+	  // Susie plugin\x82œǂݍ\x9E\x82߂Ȃ\xA2JPEG\x83t\x83@\x83C\x83\x8B\x82\xAA\x91\xB6\x8D݂\xB5\x82\xBD\x8Fꍇ\x81A
+	  // OLE \x82𗘗p\x82\xB5\x82ēǂށB
+    hbm = GetBitmapHandle(src->file);
 
+  }
+
   if(hbm)
   {
     BITMAP bm;
@@ -835,10 +862,8 @@
 
 void BGPreloadWallpaper(BGSrc *src)
 {
-//#define DEBUG_XP
 	HBITMAP       hbm;
 	WallpaperInfo wi;
-	OSVERSIONINFO osvi;
 	int s_width, s_height;
 
 	BGGetWallpaperInfo(&wi);
@@ -847,12 +872,7 @@
 	strcpy(wi.filename, "c:\\usr\\ttssh2\\1011_01.jpg");
 #endif
 
-	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-	GetVersionEx(&osvi);
-#ifdef DEBUG_XP
-	osvi.dwMajorVersion = 7;
-#endif
-	if (osvi.dwMajorVersion < 6) {
+	if (IsLoadImageOnlyEnabled()) {
 		//\x95ǎ\x86\x82\xF0\x93ǂݍ\x9E\x82\xDD
 		//LR_CREATEDIBSECTION \x82\xF0\x8Ew\x92肷\x82\xE9\x82̂\xAA\x83R\x83c
 		if (wi.pattern == BG_STRETCH) {
@@ -965,31 +985,39 @@
 
 void BGStretchPicture(HDC hdcDest,BGSrc *src,int x,int y,int width,int height,BOOL bAntiAlias)
 {
-  if(!hdcDest || !src)
-    return;
+	if(!hdcDest || !src)
+		return;
 
-  if(bAntiAlias)
-  {
-    if(src->width != width || src->height != height)
-    {
-      HBITMAP hbm;
+	if(bAntiAlias)
+	{
+		if(src->width != width || src->height != height)
+		{
+			HBITMAP hbm;
 
-      hbm = LoadImage(0,src->file,IMAGE_BITMAP,width,height,LR_LOADFROMFILE);
+			if (IsLoadImageOnlyEnabled()) {
+				hbm = LoadImage(0,src->file,IMAGE_BITMAP,width,height,LR_LOADFROMFILE);
+			} else {
+				HBITMAP newhbm;
+				hbm = GetBitmapHandle(src->file);
+				newhbm = CreateStretched32BppBitmapBilinear(hbm, width, height);
+				DeleteObject(hbm);
+				hbm = newhbm;
+			}
 
-      if(!hbm)
-        return;
-      
-      DeleteBitmapDC(&(src->hdc));
-      src->hdc = CreateBitmapDC(hbm);
-      src->width  = width;
-      src->height = height;
-    }
-  
-    BitBlt(hdcDest,x,y,width,height,src->hdc,0,0,SRCCOPY);
-  }else{
-    SetStretchBltMode(src->hdc,COLORONCOLOR);
-    StretchBlt(hdcDest,x,y,width,height,src->hdc,0,0,src->width,src->height,SRCCOPY);
-  }
+			if(!hbm)
+				return;
+
+			DeleteBitmapDC(&(src->hdc));
+			src->hdc = CreateBitmapDC(hbm);
+			src->width  = width;
+			src->height = height;
+		}
+
+		BitBlt(hdcDest,x,y,width,height,src->hdc,0,0,SRCCOPY);
+	}else{
+		SetStretchBltMode(src->hdc,COLORONCOLOR);
+		StretchBlt(hdcDest,x,y,width,height,src->hdc,0,0,src->width,src->height,SRCCOPY);
+	}
 }
 
 void BGLoadPicture(HDC hdcDest,BGSrc *src)



Ttssh2-commit メーリングリストの案内
Back to archive index