]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix on screen keyboard transparency
authorToni Wilen <twilen@winuae.net>
Sat, 4 Nov 2023 13:56:35 +0000 (15:56 +0200)
committerToni Wilen <twilen@winuae.net>
Sat, 4 Nov 2023 13:56:35 +0000 (15:56 +0200)
od-win32/direct3d11.cpp
od-win32/win32gfx.cpp

index 4042bd24a1e1ace097fc0d8010d86c55e540a095..abd5df2f948fa556213d05b15d234764566757bf 100644 (file)
@@ -5041,6 +5041,7 @@ static bool xD3D11_alloctexture(int monid, int w, int h)
 
        if (d3d->invalidmode)
                return false;
+
        d3d->m_bitmapWidth = w;
        d3d->m_bitmapHeight = h;
        d3d->m_bitmapWidth2 = d3d->m_bitmapWidth;
@@ -5548,8 +5549,24 @@ static bool xD3D11_extoverlay(struct extoverlay *ext, int monid)
 
        hr = d3d->m_deviceContext->Map(s->texture, 0, D3D11_MAP_WRITE_DISCARD, 0, &map);
        if (SUCCEEDED(hr)) {
-               for (int y = 0; y < s->height; y++) {
-                       memcpy((uae_u8*)map.pData + y * map.RowPitch, ext->data + y * ext->width * 4, ext->width * 4);
+               if (d3d->hdr) {
+                       for (int y = 0; y < s->height; y++) {
+                               uae_u32 *dp = (uae_u32*)((uae_u8 *)map.pData + y * map.RowPitch);
+                               uae_u32 *sp = (uae_u32*)(ext->data + y * ext->width * 4);
+                               for (int x = 0; x < s->width; x++) {
+                                       uae_u32 v = *sp++;
+                                       uae_u16 t = (v >> 24) * 10 / 7;
+                                       if (t > 255) {
+                                               t = 255;
+                                       }
+                                       *dp++ = (v & 0xffffff) | (t << 24);
+                               }
+                       }
+
+               } else {
+                       for (int y = 0; y < s->height; y++) {
+                               memcpy((uae_u8*)map.pData + y * map.RowPitch, ext->data + y * ext->width * 4, ext->width * 4);
+                       }
                }
                d3d->m_deviceContext->Unmap(s->texture, 0);
        }
index ca69f8543096845f620ddb6b2e55a780842a82d1..11cf09618c9a1624134cfbc557ddbbc78cb7da34 100644 (file)
@@ -4434,8 +4434,8 @@ static struct osd_kb *osd_kb_data;
 static int osd_kb_selected = 11, osd_kb_x, osd_kb_y;
 struct extoverlay osd_kb_eo = { 0 };
 
-#define OSD_KB_TRANSPARENCY 0xee
-#define OSD_KB_ACTIVE_TRANSPARENCY 0xee
+#define OSD_KB_TRANSPARENCY 0xaa
+#define OSD_KB_ACTIVE_TRANSPARENCY 0xaa
 #define OSD_KB_PRESSED_TRANSPARENCY 0xff
 #define OSD_KB_COLOR 0xeeeeee
 #define OSD_KB_ACTIVE_COLOR 0x44cc44