Fixed pixmap leak with the 1x1 bitmap in memory DCs.
[wine] / graphics / ttydrv / palette.c
1 /*
2  * TTY palette driver
3  *
4  * Copyright 1999 Patrik Stridvall
5  */
6
7 #include "color.h"
8 #include "debugtools.h"
9 #include "palette.h"
10 #include "ttydrv.h"
11 #include "xmalloc.h"
12
13 DEFAULT_DEBUG_CHANNEL(ttydrv)
14
15 /**********************************************************************/
16
17 extern DeviceCaps TTYDRV_DC_DevCaps;
18
19 extern PALETTEENTRY *COLOR_sysPal;
20 extern int COLOR_gapStart;
21 extern int COLOR_gapEnd;
22 extern int COLOR_gapFilled;
23 extern int COLOR_max;
24
25 extern const PALETTEENTRY COLOR_sysPalTemplate[NB_RESERVED_COLORS]; 
26
27 /***********************************************************************
28  *           TTYDRV_PALETTE_Initialize
29  */
30 BOOL TTYDRV_PALETTE_Initialize(void)
31 {
32   int i;
33
34   TRACE("(void)\n");
35
36   TTYDRV_DC_DevCaps.sizePalette = 256;
37
38   COLOR_sysPal = (PALETTEENTRY *) xmalloc(sizeof(PALETTEENTRY) * TTYDRV_DC_DevCaps.sizePalette);
39
40   for(i=0; i < TTYDRV_DC_DevCaps.sizePalette; i++ ) {
41     const PALETTEENTRY *src;
42     PALETTEENTRY *dst = &COLOR_sysPal[i];
43
44     if(i < NB_RESERVED_COLORS/2) {
45       src = &COLOR_sysPalTemplate[i];
46     } else if(i >= TTYDRV_DC_DevCaps.sizePalette - NB_RESERVED_COLORS/2) {
47       src = &COLOR_sysPalTemplate[NB_RESERVED_COLORS + i - TTYDRV_DC_DevCaps.sizePalette];
48     } else {
49       PALETTEENTRY pe = { 0, 0, 0, 0 };
50       src = &pe;
51     }
52
53     if((src->peRed + src->peGreen + src->peBlue) <= 0xB0) {
54       dst->peRed = 0;
55       dst->peGreen = 0;  
56       dst->peBlue = 0;
57       dst->peFlags = PC_SYS_USED;
58     } else {
59       dst->peRed = 255;  
60       dst->peGreen= 255;  
61       dst->peBlue = 255;
62       dst->peFlags = PC_SYS_USED;
63     }    
64   }
65
66   COLOR_gapStart = NB_RESERVED_COLORS/2;
67   COLOR_gapEnd = NB_RESERVED_COLORS/2;
68
69   return TRUE;
70 }
71
72 /***********************************************************************
73  *           TTYDRV_PALETTE_Finalize
74  *
75  */
76 void TTYDRV_PALETTE_Finalize(void)
77 {
78   TRACE("(void)\n");
79 }
80
81 /***********************************************************************
82  *           TTYDRV_PALETTE_SetMapping
83  */
84 int TTYDRV_PALETTE_SetMapping(
85   PALETTEOBJ *palPtr, UINT uStart, UINT uNum, BOOL mapOnly)
86 {
87   FIXME("(%p, %u, %u, %d): stub\n", palPtr, uStart, uNum, mapOnly);
88
89   return 0;
90 }
91
92 /***********************************************************************
93  *           TTYDRV_PALETTE_UpdateMapping
94  */
95 int TTYDRV_PALETTE_UpdateMapping(PALETTEOBJ *palPtr)
96 {
97   TRACE("(%p)\n", palPtr);
98
99   return 0;
100 }
101
102 /***********************************************************************
103  *           TTYDRV_PALETTE_IsDark
104  */
105 int TTYDRV_PALETTE_IsDark(int pixel)
106 {
107   FIXME("(%d): stub\n", pixel);
108
109   return 0;
110 }