2 * Copyright (C) Hidenori TAKESHIMA
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 #include "wine/debug.h"
25 WINE_DEFAULT_DEBUG_CHANNEL(quartz);
30 #define QUARTZ_LOBYTE(pix) ((BYTE)((pix)&0xff))
31 #define QUARTZ_HIBYTE(pix) ((BYTE)((pix)>>8))
33 void VIDEOBLT_Blt_888_to_332(
34 BYTE* pDst, LONG pitchDst,
35 const BYTE* pSrc, LONG pitchSrc,
36 LONG width, LONG height,
37 const RGBQUAD* prgbSrc, LONG nClrUsed )
41 for ( y = 0; y < height; y++ )
43 for ( x = 0; x < width; x++ )
45 *pDst++ = ((pSrc[2]&0xe0) ) |
50 pDst += pitchDst - width;
51 pSrc += pitchSrc - width*3;
55 void VIDEOBLT_Blt_888_to_555(
56 BYTE* pDst, LONG pitchDst,
57 const BYTE* pSrc, LONG pitchSrc,
58 LONG width, LONG height,
59 const RGBQUAD* prgbSrc, LONG nClrUsed )
64 for ( y = 0; y < height; y++ )
66 for ( x = 0; x < width; x++ )
68 pix = ((unsigned)(pSrc[2]&0xf8)<<7) |
69 ((unsigned)(pSrc[1]&0xf8)<<2) |
70 ((unsigned)(pSrc[0]&0xf8)>>3);
71 *pDst++ = QUARTZ_LOBYTE(pix);
72 *pDst++ = QUARTZ_HIBYTE(pix);
75 pDst += pitchDst - width*2;
76 pSrc += pitchSrc - width*3;
80 void VIDEOBLT_Blt_888_to_565(
81 BYTE* pDst, LONG pitchDst,
82 const BYTE* pSrc, LONG pitchSrc,
83 LONG width, LONG height,
84 const RGBQUAD* prgbSrc, LONG nClrUsed )
89 for ( y = 0; y < height; y++ )
91 for ( x = 0; x < width; x++ )
93 pix = ((unsigned)(pSrc[2]&0xf8)<<8) |
94 ((unsigned)(pSrc[1]&0xfc)<<3) |
95 ((unsigned)(pSrc[0]&0xf8)>>3);
96 *pDst++ = QUARTZ_LOBYTE(pix);
97 *pDst++ = QUARTZ_HIBYTE(pix);
100 pDst += pitchDst - width*2;
101 pSrc += pitchSrc - width*3;
105 void VIDEOBLT_Blt_888_to_8888(
106 BYTE* pDst, LONG pitchDst,
107 const BYTE* pSrc, LONG pitchSrc,
108 LONG width, LONG height,
109 const RGBQUAD* prgbSrc, LONG nClrUsed )
113 for ( y = 0; y < height; y++ )
115 for ( x = 0; x < width; x++ )
120 *pDst++ = (BYTE)0xff;
122 pDst += pitchDst - width*4;
123 pSrc += pitchSrc - width*3;