You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

936 lines
125 KiB
HTML

<!doctype html public "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>wine/dlls/gdi/dib.c</title>
<base href="http://source.winehq.org/">
</head>
<body bgcolor=white>
<div align=center>
~ <b>[</b>&nbsp;<b><i>source navigation</i></b>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="diff/dlls/gdi/dib.c?v=wine20040914">diff markup</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="ident?v=wine20040914">identifier search</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="search?v=wine20040914">freetext search</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="find?v=wine20040914">file search</a>&nbsp;<b>]</b> ~
</div>
<h1 align=center>
<a href="/">
Wine</a>
<a href="blurb.html">
Cross Reference</a><br>
<a href="source/?v=wine20040914">wine</a>/<a href="source/dlls/?v=wine20040914">dlls</a>/<a href="source/dlls/gdi/?v=wine20040914">gdi</a>/<a href="source/dlls/gdi/dib.c?v=wine20040914">dib.c</a>
</h1>
<div align=center>
<b>Version:</b>
~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c">wine-0.9.18</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.17">wine-0.9.17</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.16">wine-0.9.16</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.15">wine-0.9.15</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.14">wine-0.9.14</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.13">wine-0.9.13</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.12">wine-0.9.12</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.11">wine-0.9.11</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.10">wine-0.9.10</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.9">wine-0.9.9</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.8">wine-0.9.8</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.7">wine-0.9.7</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.6">wine-0.9.6</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.5">wine-0.9.5</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.4">wine-0.9.4</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.3">wine-0.9.3</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.2">wine-0.9.2</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9.1">wine-0.9.1</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine-0.9">wine-0.9</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050930">wine20050930</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050830">wine20050830</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050725">wine20050725</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050628">wine20050628</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050524">wine20050524</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050419">wine20050419</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050310">wine20050310</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050211">wine20050211</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20050111">wine20050111</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20041201">wine20041201</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20041019">wine20041019</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<b><i>wine20040914</i></b>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040813">wine20040813</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040716">wine20040716</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040615">wine20040615</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040505">wine20040505</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040408">wine20040408</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040309">wine20040309</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040213">wine20040213</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20040121">wine20040121</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20031212">wine20031212</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20031118">wine20031118</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20031016">wine20031016</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030911">wine20030911</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030813">wine20030813</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030709">wine20030709</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030618">wine20030618</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030508">wine20030508</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030408">wine20030408</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030318">wine20030318</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030219">wine20030219</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20030115">wine20030115</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20021219">wine20021219</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20021125">wine20021125</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20021031">wine20021031</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20021007">wine20021007</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020904">wine20020904</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020804">wine20020804</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020710">wine20020710</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020605">wine20020605</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020509">wine20020509</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020411">wine20020411</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020310">wine20020310</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20020228">wine20020228</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20011226">wine20011226</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20011108">wine20011108</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20011004">wine20011004</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010824">wine20010824</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010731">wine20010731</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010629">wine20010629</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010510">wine20010510</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010418">wine20010418</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010326">wine20010326</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010305">wine20010305</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010216">wine20010216</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20010112">wine20010112</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20001222">wine20001222</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20001202">wine20001202</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20001026">wine20001026</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20001002">wine20001002</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000909">wine20000909</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000821">wine20000821</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000801">wine20000801</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000716">wine20000716</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000326">wine20000326</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000227">wine20000227</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000130">wine20000130</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="source/dlls/gdi/dib.c?v=wine20000109">wine20000109</a>&nbsp;<b>]</b> ~
<br>
</div>
<hr>
<pre> <a name=L1 href="source/dlls/gdi/dib.c?v=wine20040914#L1">1</a> <b><i>/*</i></b>
<a name=L2 href="source/dlls/gdi/dib.c?v=wine20040914#L2">2</a> <b><i> * GDI device-independent bitmaps</i></b>
<a name=L3 href="source/dlls/gdi/dib.c?v=wine20040914#L3">3</a> <b><i> *</i></b>
<a name=L4 href="source/dlls/gdi/dib.c?v=wine20040914#L4">4</a> <b><i> * Copyright 1993,1994 Alexandre Julliard</i></b>
<a name=L5 href="source/dlls/gdi/dib.c?v=wine20040914#L5">5</a> <b><i> *</i></b>
<a name=L6 href="source/dlls/gdi/dib.c?v=wine20040914#L6">6</a> <b><i> * This library is free software; you can redistribute it and/or</i></b>
<a name=L7 href="source/dlls/gdi/dib.c?v=wine20040914#L7">7</a> <b><i> * modify it under the terms of the GNU Lesser General Public</i></b>
<a name=L8 href="source/dlls/gdi/dib.c?v=wine20040914#L8">8</a> <b><i> * License as published by the Free Software Foundation; either</i></b>
<a name=L9 href="source/dlls/gdi/dib.c?v=wine20040914#L9">9</a> <b><i> * version 2.1 of the License, or (at your option) any later version.</i></b>
<a name=L10 href="source/dlls/gdi/dib.c?v=wine20040914#L10">10</a> <b><i> *</i></b>
<a name=L11 href="source/dlls/gdi/dib.c?v=wine20040914#L11">11</a> <b><i> * This library is distributed in the hope that it will be useful,</i></b>
<a name=L12 href="source/dlls/gdi/dib.c?v=wine20040914#L12">12</a> <b><i> * but WITHOUT ANY WARRANTY; without even the implied warranty of</i></b>
<a name=L13 href="source/dlls/gdi/dib.c?v=wine20040914#L13">13</a> <b><i> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</i></b>
<a name=L14 href="source/dlls/gdi/dib.c?v=wine20040914#L14">14</a> <b><i> * Lesser General Public License for more details.</i></b>
<a name=L15 href="source/dlls/gdi/dib.c?v=wine20040914#L15">15</a> <b><i> *</i></b>
<a name=L16 href="source/dlls/gdi/dib.c?v=wine20040914#L16">16</a> <b><i> * You should have received a copy of the GNU Lesser General Public</i></b>
<a name=L17 href="source/dlls/gdi/dib.c?v=wine20040914#L17">17</a> <b><i> * License along with this library; if not, write to the Free Software</i></b>
<a name=L18 href="source/dlls/gdi/dib.c?v=wine20040914#L18">18</a> <b><i> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</i></b>
<a name=L19 href="source/dlls/gdi/dib.c?v=wine20040914#L19">19</a> <b><i> */</i></b>
<a name=L20 href="source/dlls/gdi/dib.c?v=wine20040914#L20">20</a>
<a name=L21 href="source/dlls/gdi/dib.c?v=wine20040914#L21">21</a> #include &lt;stdarg.h&gt;
<a name=L22 href="source/dlls/gdi/dib.c?v=wine20040914#L22">22</a> #include &lt;stdlib.h&gt;
<a name=L23 href="source/dlls/gdi/dib.c?v=wine20040914#L23">23</a> #include &lt;string.h&gt;
<a name=L24 href="source/dlls/gdi/dib.c?v=wine20040914#L24">24</a>
<a name=L25 href="source/dlls/gdi/dib.c?v=wine20040914#L25">25</a> #include "<a href="source/include/windef.h?v=wine20040914">windef.h</a>"
<a name=L26 href="source/dlls/gdi/dib.c?v=wine20040914#L26">26</a> #include "<a href="source/include/winbase.h?v=wine20040914">winbase.h</a>"
<a name=L27 href="source/dlls/gdi/dib.c?v=wine20040914#L27">27</a> #include "<a href="source/include/gdi.h?v=wine20040914">gdi.h</a>"
<a name=L28 href="source/dlls/gdi/dib.c?v=wine20040914#L28">28</a> #include "<a href="source/include/wownt32.h?v=wine20040914">wownt32.h</a>"
<a name=L29 href="source/dlls/gdi/dib.c?v=wine20040914#L29">29</a> #include "<a href="source/include/gdi_private.h?v=wine20040914">gdi_private.h</a>"
<a name=L30 href="source/dlls/gdi/dib.c?v=wine20040914#L30">30</a> #include "<a href="source/include/wine/debug.h?v=wine20040914">wine/debug.h</a>"
<a name=L31 href="source/dlls/gdi/dib.c?v=wine20040914#L31">31</a>
<a name=L32 href="source/dlls/gdi/dib.c?v=wine20040914#L32">32</a> <a href="ident?v=wine20040914;i=WINE_DEFAULT_DEBUG_CHANNEL">WINE_DEFAULT_DEBUG_CHANNEL</a>(<a href="ident?v=wine20040914;i=bitmap">bitmap</a>);
<a name=L33 href="source/dlls/gdi/dib.c?v=wine20040914#L33">33</a>
<a name=L34 href="source/dlls/gdi/dib.c?v=wine20040914#L34">34</a> <b><i>/***********************************************************************</i></b>
<a name=L35 href="source/dlls/gdi/dib.c?v=wine20040914#L35">35</a> <b><i> * DIB_GetDIBWidthBytes</i></b>
<a name=L36 href="source/dlls/gdi/dib.c?v=wine20040914#L36">36</a> <b><i> *</i></b>
<a name=L37 href="source/dlls/gdi/dib.c?v=wine20040914#L37">37</a> <b><i> * Return the width of a DIB bitmap in bytes. DIB bitmap data is 32-bit aligned.</i></b>
<a name=L38 href="source/dlls/gdi/dib.c?v=wine20040914#L38">38</a> <b><i> * <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_87eb.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_87eb.asp</a></i></b>
<a name=L39 href="source/dlls/gdi/dib.c?v=wine20040914#L39">39</a> <b><i> */</i></b>
<a name=L40 href="source/dlls/gdi/dib.c?v=wine20040914#L40">40</a> int <a href="ident?v=wine20040914;i=DIB_GetDIBWidthBytes">DIB_GetDIBWidthBytes</a>( int <a href="ident?v=wine20040914;i=width">width</a>, int depth )
<a name=L41 href="source/dlls/gdi/dib.c?v=wine20040914#L41">41</a> {
<a name=L42 href="source/dlls/gdi/dib.c?v=wine20040914#L42">42</a> int words;
<a name=L43 href="source/dlls/gdi/dib.c?v=wine20040914#L43">43</a>
<a name=L44 href="source/dlls/gdi/dib.c?v=wine20040914#L44">44</a> switch(depth)
<a name=L45 href="source/dlls/gdi/dib.c?v=wine20040914#L45">45</a> {
<a name=L46 href="source/dlls/gdi/dib.c?v=wine20040914#L46">46</a> case 1: words = (<a href="ident?v=wine20040914;i=width">width</a> + 31) / 32; break;
<a name=L47 href="source/dlls/gdi/dib.c?v=wine20040914#L47">47</a> case 4: words = (<a href="ident?v=wine20040914;i=width">width</a> + 7) / 8; break;
<a name=L48 href="source/dlls/gdi/dib.c?v=wine20040914#L48">48</a> case 8: words = (<a href="ident?v=wine20040914;i=width">width</a> + 3) / 4; break;
<a name=L49 href="source/dlls/gdi/dib.c?v=wine20040914#L49">49</a> case 15:
<a name=L50 href="source/dlls/gdi/dib.c?v=wine20040914#L50">50</a> case 16: words = (<a href="ident?v=wine20040914;i=width">width</a> + 1) / 2; break;
<a name=L51 href="source/dlls/gdi/dib.c?v=wine20040914#L51">51</a> case 24: words = (<a href="ident?v=wine20040914;i=width">width</a> * 3 + 3)/4; break;
<a name=L52 href="source/dlls/gdi/dib.c?v=wine20040914#L52">52</a>
<a name=L53 href="source/dlls/gdi/dib.c?v=wine20040914#L53">53</a> default:
<a name=L54 href="source/dlls/gdi/dib.c?v=wine20040914#L54">54</a> <a href="ident?v=wine20040914;i=WARN">WARN</a>(<i>"(%d): Unsupported depth\n"</i>, depth );
<a name=L55 href="source/dlls/gdi/dib.c?v=wine20040914#L55">55</a> <b><i>/* fall through */</i></b>
<a name=L56 href="source/dlls/gdi/dib.c?v=wine20040914#L56">56</a> case 32:
<a name=L57 href="source/dlls/gdi/dib.c?v=wine20040914#L57">57</a> words = <a href="ident?v=wine20040914;i=width">width</a>;
<a name=L58 href="source/dlls/gdi/dib.c?v=wine20040914#L58">58</a> }
<a name=L59 href="source/dlls/gdi/dib.c?v=wine20040914#L59">59</a> return 4 * words;
<a name=L60 href="source/dlls/gdi/dib.c?v=wine20040914#L60">60</a> }
<a name=L61 href="source/dlls/gdi/dib.c?v=wine20040914#L61">61</a>
<a name=L62 href="source/dlls/gdi/dib.c?v=wine20040914#L62">62</a> <b><i>/***********************************************************************</i></b>
<a name=L63 href="source/dlls/gdi/dib.c?v=wine20040914#L63">63</a> <b><i> * DIB_GetDIBImageBytes</i></b>
<a name=L64 href="source/dlls/gdi/dib.c?v=wine20040914#L64">64</a> <b><i> *</i></b>
<a name=L65 href="source/dlls/gdi/dib.c?v=wine20040914#L65">65</a> <b><i> * Return the number of bytes used to hold the image in a DIB bitmap.</i></b>
<a name=L66 href="source/dlls/gdi/dib.c?v=wine20040914#L66">66</a> <b><i> */</i></b>
<a name=L67 href="source/dlls/gdi/dib.c?v=wine20040914#L67">67</a> int <a href="ident?v=wine20040914;i=DIB_GetDIBImageBytes">DIB_GetDIBImageBytes</a>( int <a href="ident?v=wine20040914;i=width">width</a>, int height, int depth )
<a name=L68 href="source/dlls/gdi/dib.c?v=wine20040914#L68">68</a> {
<a name=L69 href="source/dlls/gdi/dib.c?v=wine20040914#L69">69</a> return <a href="ident?v=wine20040914;i=DIB_GetDIBWidthBytes">DIB_GetDIBWidthBytes</a>( <a href="ident?v=wine20040914;i=width">width</a>, depth ) * abs( height );
<a name=L70 href="source/dlls/gdi/dib.c?v=wine20040914#L70">70</a> }
<a name=L71 href="source/dlls/gdi/dib.c?v=wine20040914#L71">71</a>
<a name=L72 href="source/dlls/gdi/dib.c?v=wine20040914#L72">72</a>
<a name=L73 href="source/dlls/gdi/dib.c?v=wine20040914#L73">73</a> <b><i>/***********************************************************************</i></b>
<a name=L74 href="source/dlls/gdi/dib.c?v=wine20040914#L74">74</a> <b><i> * DIB_BitmapInfoSize</i></b>
<a name=L75 href="source/dlls/gdi/dib.c?v=wine20040914#L75">75</a> <b><i> *</i></b>
<a name=L76 href="source/dlls/gdi/dib.c?v=wine20040914#L76">76</a> <b><i> * Return the size of the bitmap info structure including color table.</i></b>
<a name=L77 href="source/dlls/gdi/dib.c?v=wine20040914#L77">77</a> <b><i> */</i></b>
<a name=L78 href="source/dlls/gdi/dib.c?v=wine20040914#L78">78</a> int <a href="ident?v=wine20040914;i=DIB_BitmapInfoSize">DIB_BitmapInfoSize</a>( const BITMAPINFO * <a href="ident?v=wine20040914;i=info">info</a>, <a href="ident?v=wine20040914;i=WORD">WORD</a> coloruse )
<a name=L79 href="source/dlls/gdi/dib.c?v=wine20040914#L79">79</a> {
<a name=L80 href="source/dlls/gdi/dib.c?v=wine20040914#L80">80</a> int colors;
<a name=L81 href="source/dlls/gdi/dib.c?v=wine20040914#L81">81</a>
<a name=L82 href="source/dlls/gdi/dib.c?v=wine20040914#L82">82</a> if (<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
<a name=L83 href="source/dlls/gdi/dib.c?v=wine20040914#L83">83</a> {
<a name=L84 href="source/dlls/gdi/dib.c?v=wine20040914#L84">84</a> BITMAPCOREHEADER *core = (BITMAPCOREHEADER *)<a href="ident?v=wine20040914;i=info">info</a>;
<a name=L85 href="source/dlls/gdi/dib.c?v=wine20040914#L85">85</a> colors = (core-&gt;bcBitCount &lt;= 8) ? 1 &lt;&lt; core-&gt;bcBitCount : 0;
<a name=L86 href="source/dlls/gdi/dib.c?v=wine20040914#L86">86</a> return sizeof(BITMAPCOREHEADER) + colors *
<a name=L87 href="source/dlls/gdi/dib.c?v=wine20040914#L87">87</a> ((coloruse == <a href="ident?v=wine20040914;i=DIB_RGB_COLORS">DIB_RGB_COLORS</a>) ? sizeof(RGBTRIPLE) : sizeof(<a href="ident?v=wine20040914;i=WORD">WORD</a>));
<a name=L88 href="source/dlls/gdi/dib.c?v=wine20040914#L88">88</a> }
<a name=L89 href="source/dlls/gdi/dib.c?v=wine20040914#L89">89</a> else <b><i>/* assume BITMAPINFOHEADER */</i></b>
<a name=L90 href="source/dlls/gdi/dib.c?v=wine20040914#L90">90</a> {
<a name=L91 href="source/dlls/gdi/dib.c?v=wine20040914#L91">91</a> colors = <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biClrUsed;
<a name=L92 href="source/dlls/gdi/dib.c?v=wine20040914#L92">92</a> if (!colors &amp;&amp; (<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount &lt;= 8))
<a name=L93 href="source/dlls/gdi/dib.c?v=wine20040914#L93">93</a> colors = 1 &lt;&lt; <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount;
<a name=L94 href="source/dlls/gdi/dib.c?v=wine20040914#L94">94</a> return sizeof(BITMAPINFOHEADER) + colors *
<a name=L95 href="source/dlls/gdi/dib.c?v=wine20040914#L95">95</a> ((coloruse == <a href="ident?v=wine20040914;i=DIB_RGB_COLORS">DIB_RGB_COLORS</a>) ? sizeof(RGBQUAD) : sizeof(<a href="ident?v=wine20040914;i=WORD">WORD</a>));
<a name=L96 href="source/dlls/gdi/dib.c?v=wine20040914#L96">96</a> }
<a name=L97 href="source/dlls/gdi/dib.c?v=wine20040914#L97">97</a> }
<a name=L98 href="source/dlls/gdi/dib.c?v=wine20040914#L98">98</a>
<a name=L99 href="source/dlls/gdi/dib.c?v=wine20040914#L99">99</a>
<a name=L100 href="source/dlls/gdi/dib.c?v=wine20040914#L100">100</a> <b><i>/***********************************************************************</i></b>
<a name=L101 href="source/dlls/gdi/dib.c?v=wine20040914#L101">101</a> <b><i> * DIB_GetBitmapInfo</i></b>
<a name=L102 href="source/dlls/gdi/dib.c?v=wine20040914#L102">102</a> <b><i> *</i></b>
<a name=L103 href="source/dlls/gdi/dib.c?v=wine20040914#L103">103</a> <b><i> * Get the info from a bitmap header.</i></b>
<a name=L104 href="source/dlls/gdi/dib.c?v=wine20040914#L104">104</a> <b><i> * Return 1 for INFOHEADER, 0 for COREHEADER,</i></b>
<a name=L105 href="source/dlls/gdi/dib.c?v=wine20040914#L105">105</a> <b><i> * 4 for V4HEADER, 5 for V5HEADER, -1 for error.</i></b>
<a name=L106 href="source/dlls/gdi/dib.c?v=wine20040914#L106">106</a> <b><i> */</i></b>
<a name=L107 href="source/dlls/gdi/dib.c?v=wine20040914#L107">107</a> static int <a href="ident?v=wine20040914;i=DIB_GetBitmapInfo">DIB_GetBitmapInfo</a>( const BITMAPINFOHEADER *<a href="ident?v=wine20040914;i=header">header</a>, DWORD *<a href="ident?v=wine20040914;i=width">width</a>,
<a name=L108 href="source/dlls/gdi/dib.c?v=wine20040914#L108">108</a> int *height, <a href="ident?v=wine20040914;i=WORD">WORD</a> *bpp, <a href="ident?v=wine20040914;i=WORD">WORD</a> *compr )
<a name=L109 href="source/dlls/gdi/dib.c?v=wine20040914#L109">109</a> {
<a name=L110 href="source/dlls/gdi/dib.c?v=wine20040914#L110">110</a> if (<a href="ident?v=wine20040914;i=header">header</a>-&gt;biSize == sizeof(BITMAPINFOHEADER))
<a name=L111 href="source/dlls/gdi/dib.c?v=wine20040914#L111">111</a> {
<a name=L112 href="source/dlls/gdi/dib.c?v=wine20040914#L112">112</a> *<a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=header">header</a>-&gt;biWidth;
<a name=L113 href="source/dlls/gdi/dib.c?v=wine20040914#L113">113</a> *height = <a href="ident?v=wine20040914;i=header">header</a>-&gt;biHeight;
<a name=L114 href="source/dlls/gdi/dib.c?v=wine20040914#L114">114</a> *bpp = <a href="ident?v=wine20040914;i=header">header</a>-&gt;biBitCount;
<a name=L115 href="source/dlls/gdi/dib.c?v=wine20040914#L115">115</a> *compr = <a href="ident?v=wine20040914;i=header">header</a>-&gt;biCompression;
<a name=L116 href="source/dlls/gdi/dib.c?v=wine20040914#L116">116</a> return 1;
<a name=L117 href="source/dlls/gdi/dib.c?v=wine20040914#L117">117</a> }
<a name=L118 href="source/dlls/gdi/dib.c?v=wine20040914#L118">118</a> if (<a href="ident?v=wine20040914;i=header">header</a>-&gt;biSize == sizeof(BITMAPCOREHEADER))
<a name=L119 href="source/dlls/gdi/dib.c?v=wine20040914#L119">119</a> {
<a name=L120 href="source/dlls/gdi/dib.c?v=wine20040914#L120">120</a> BITMAPCOREHEADER *core = (BITMAPCOREHEADER *)<a href="ident?v=wine20040914;i=header">header</a>;
<a name=L121 href="source/dlls/gdi/dib.c?v=wine20040914#L121">121</a> *<a href="ident?v=wine20040914;i=width">width</a> = core-&gt;bcWidth;
<a name=L122 href="source/dlls/gdi/dib.c?v=wine20040914#L122">122</a> *height = core-&gt;bcHeight;
<a name=L123 href="source/dlls/gdi/dib.c?v=wine20040914#L123">123</a> *bpp = core-&gt;bcBitCount;
<a name=L124 href="source/dlls/gdi/dib.c?v=wine20040914#L124">124</a> *compr = 0;
<a name=L125 href="source/dlls/gdi/dib.c?v=wine20040914#L125">125</a> return 0;
<a name=L126 href="source/dlls/gdi/dib.c?v=wine20040914#L126">126</a> }
<a name=L127 href="source/dlls/gdi/dib.c?v=wine20040914#L127">127</a> if (<a href="ident?v=wine20040914;i=header">header</a>-&gt;biSize == sizeof(BITMAPV4HEADER))
<a name=L128 href="source/dlls/gdi/dib.c?v=wine20040914#L128">128</a> {
<a name=L129 href="source/dlls/gdi/dib.c?v=wine20040914#L129">129</a> BITMAPV4HEADER *v4hdr = (BITMAPV4HEADER *)<a href="ident?v=wine20040914;i=header">header</a>;
<a name=L130 href="source/dlls/gdi/dib.c?v=wine20040914#L130">130</a> *<a href="ident?v=wine20040914;i=width">width</a> = v4hdr-&gt;bV4Width;
<a name=L131 href="source/dlls/gdi/dib.c?v=wine20040914#L131">131</a> *height = v4hdr-&gt;bV4Height;
<a name=L132 href="source/dlls/gdi/dib.c?v=wine20040914#L132">132</a> *bpp = v4hdr-&gt;bV4BitCount;
<a name=L133 href="source/dlls/gdi/dib.c?v=wine20040914#L133">133</a> *compr = v4hdr-&gt;bV4V4Compression;
<a name=L134 href="source/dlls/gdi/dib.c?v=wine20040914#L134">134</a> return 4;
<a name=L135 href="source/dlls/gdi/dib.c?v=wine20040914#L135">135</a> }
<a name=L136 href="source/dlls/gdi/dib.c?v=wine20040914#L136">136</a> if (<a href="ident?v=wine20040914;i=header">header</a>-&gt;biSize == sizeof(BITMAPV5HEADER))
<a name=L137 href="source/dlls/gdi/dib.c?v=wine20040914#L137">137</a> {
<a name=L138 href="source/dlls/gdi/dib.c?v=wine20040914#L138">138</a> BITMAPV5HEADER *v5hdr = (BITMAPV5HEADER *)<a href="ident?v=wine20040914;i=header">header</a>;
<a name=L139 href="source/dlls/gdi/dib.c?v=wine20040914#L139">139</a> *<a href="ident?v=wine20040914;i=width">width</a> = v5hdr-&gt;bV5Width;
<a name=L140 href="source/dlls/gdi/dib.c?v=wine20040914#L140">140</a> *height = v5hdr-&gt;bV5Height;
<a name=L141 href="source/dlls/gdi/dib.c?v=wine20040914#L141">141</a> *bpp = v5hdr-&gt;bV5BitCount;
<a name=L142 href="source/dlls/gdi/dib.c?v=wine20040914#L142">142</a> *compr = v5hdr-&gt;bV5Compression;
<a name=L143 href="source/dlls/gdi/dib.c?v=wine20040914#L143">143</a> return 5;
<a name=L144 href="source/dlls/gdi/dib.c?v=wine20040914#L144">144</a> }
<a name=L145 href="source/dlls/gdi/dib.c?v=wine20040914#L145">145</a> <a href="ident?v=wine20040914;i=ERR">ERR</a>(<i>"(%ld): unknown/wrong size for header\n"</i>, <a href="ident?v=wine20040914;i=header">header</a>-&gt;biSize );
<a name=L146 href="source/dlls/gdi/dib.c?v=wine20040914#L146">146</a> return -1;
<a name=L147 href="source/dlls/gdi/dib.c?v=wine20040914#L147">147</a> }
<a name=L148 href="source/dlls/gdi/dib.c?v=wine20040914#L148">148</a>
<a name=L149 href="source/dlls/gdi/dib.c?v=wine20040914#L149">149</a>
<a name=L150 href="source/dlls/gdi/dib.c?v=wine20040914#L150">150</a> <b><i>/***********************************************************************</i></b>
<a name=L151 href="source/dlls/gdi/dib.c?v=wine20040914#L151">151</a> <b><i> * StretchDIBits (GDI32.@)</i></b>
<a name=L152 href="source/dlls/gdi/dib.c?v=wine20040914#L152">152</a> <b><i> */</i></b>
<a name=L153 href="source/dlls/gdi/dib.c?v=wine20040914#L153">153</a> <a href="ident?v=wine20040914;i=INT">INT</a> <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=StretchDIBits">StretchDIBits</a>(HDC hdc, <a href="ident?v=wine20040914;i=INT">INT</a> xDst, <a href="ident?v=wine20040914;i=INT">INT</a> yDst, <a href="ident?v=wine20040914;i=INT">INT</a> widthDst,
<a name=L154 href="source/dlls/gdi/dib.c?v=wine20040914#L154">154</a> <a href="ident?v=wine20040914;i=INT">INT</a> heightDst, <a href="ident?v=wine20040914;i=INT">INT</a> xSrc, <a href="ident?v=wine20040914;i=INT">INT</a> ySrc, <a href="ident?v=wine20040914;i=INT">INT</a> widthSrc,
<a name=L155 href="source/dlls/gdi/dib.c?v=wine20040914#L155">155</a> <a href="ident?v=wine20040914;i=INT">INT</a> heightSrc, const void *bits,
<a name=L156 href="source/dlls/gdi/dib.c?v=wine20040914#L156">156</a> const BITMAPINFO *<a href="ident?v=wine20040914;i=info">info</a>, UINT wUsage, DWORD dwRop )
<a name=L157 href="source/dlls/gdi/dib.c?v=wine20040914#L157">157</a> {
<a name=L158 href="source/dlls/gdi/dib.c?v=wine20040914#L158">158</a> <a href="ident?v=wine20040914;i=DC">DC</a> *dc;
<a name=L159 href="source/dlls/gdi/dib.c?v=wine20040914#L159">159</a>
<a name=L160 href="source/dlls/gdi/dib.c?v=wine20040914#L160">160</a> if (!bits || !<a href="ident?v=wine20040914;i=info">info</a>)
<a name=L161 href="source/dlls/gdi/dib.c?v=wine20040914#L161">161</a> return 0;
<a name=L162 href="source/dlls/gdi/dib.c?v=wine20040914#L162">162</a>
<a name=L163 href="source/dlls/gdi/dib.c?v=wine20040914#L163">163</a> dc = <a href="ident?v=wine20040914;i=DC_GetDCUpdate">DC_GetDCUpdate</a>( hdc );
<a name=L164 href="source/dlls/gdi/dib.c?v=wine20040914#L164">164</a> if(!dc) return <a href="ident?v=wine20040914;i=FALSE">FALSE</a>;
<a name=L165 href="source/dlls/gdi/dib.c?v=wine20040914#L165">165</a>
<a name=L166 href="source/dlls/gdi/dib.c?v=wine20040914#L166">166</a> if(dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pStretchDIBits)
<a name=L167 href="source/dlls/gdi/dib.c?v=wine20040914#L167">167</a> {
<a name=L168 href="source/dlls/gdi/dib.c?v=wine20040914#L168">168</a> heightSrc = dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pStretchDIBits(dc-&gt;physDev, xDst, yDst, widthDst,
<a name=L169 href="source/dlls/gdi/dib.c?v=wine20040914#L169">169</a> heightDst, xSrc, ySrc, widthSrc,
<a name=L170 href="source/dlls/gdi/dib.c?v=wine20040914#L170">170</a> heightSrc, bits, <a href="ident?v=wine20040914;i=info">info</a>, wUsage, dwRop);
<a name=L171 href="source/dlls/gdi/dib.c?v=wine20040914#L171">171</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L172 href="source/dlls/gdi/dib.c?v=wine20040914#L172">172</a> }
<a name=L173 href="source/dlls/gdi/dib.c?v=wine20040914#L173">173</a> else <b><i>/* use StretchBlt */</i></b>
<a name=L174 href="source/dlls/gdi/dib.c?v=wine20040914#L174">174</a> {
<a name=L175 href="source/dlls/gdi/dib.c?v=wine20040914#L175">175</a> HBITMAP hBitmap, hOldBitmap;
<a name=L176 href="source/dlls/gdi/dib.c?v=wine20040914#L176">176</a> HPALETTE hpal = <a href="ident?v=wine20040914;i=NULL">NULL</a>;
<a name=L177 href="source/dlls/gdi/dib.c?v=wine20040914#L177">177</a> HDC hdcMem;
<a name=L178 href="source/dlls/gdi/dib.c?v=wine20040914#L178">178</a>
<a name=L179 href="source/dlls/gdi/dib.c?v=wine20040914#L179">179</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L180 href="source/dlls/gdi/dib.c?v=wine20040914#L180">180</a> hdcMem = <a href="ident?v=wine20040914;i=CreateCompatibleDC">CreateCompatibleDC</a>( hdc );
<a name=L181 href="source/dlls/gdi/dib.c?v=wine20040914#L181">181</a> hBitmap = <a href="ident?v=wine20040914;i=CreateCompatibleBitmap">CreateCompatibleBitmap</a>(hdc, <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biWidth,
<a name=L182 href="source/dlls/gdi/dib.c?v=wine20040914#L182">182</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight);
<a name=L183 href="source/dlls/gdi/dib.c?v=wine20040914#L183">183</a> hOldBitmap = <a href="ident?v=wine20040914;i=SelectObject">SelectObject</a>( hdcMem, hBitmap );
<a name=L184 href="source/dlls/gdi/dib.c?v=wine20040914#L184">184</a> if(wUsage == <a href="ident?v=wine20040914;i=DIB_PAL_COLORS">DIB_PAL_COLORS</a>)
<a name=L185 href="source/dlls/gdi/dib.c?v=wine20040914#L185">185</a> {
<a name=L186 href="source/dlls/gdi/dib.c?v=wine20040914#L186">186</a> hpal = <a href="ident?v=wine20040914;i=GetCurrentObject">GetCurrentObject</a>(hdc, <a href="ident?v=wine20040914;i=OBJ_PAL">OBJ_PAL</a>);
<a name=L187 href="source/dlls/gdi/dib.c?v=wine20040914#L187">187</a> hpal = <a href="ident?v=wine20040914;i=SelectPalette">SelectPalette</a>(hdcMem, hpal, <a href="ident?v=wine20040914;i=FALSE">FALSE</a>);
<a name=L188 href="source/dlls/gdi/dib.c?v=wine20040914#L188">188</a> }
<a name=L189 href="source/dlls/gdi/dib.c?v=wine20040914#L189">189</a>
<a name=L190 href="source/dlls/gdi/dib.c?v=wine20040914#L190">190</a> if (<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biCompression == <a href="ident?v=wine20040914;i=BI_RLE4">BI_RLE4</a> ||
<a name=L191 href="source/dlls/gdi/dib.c?v=wine20040914#L191">191</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biCompression == <a href="ident?v=wine20040914;i=BI_RLE8">BI_RLE8</a>) {
<a name=L192 href="source/dlls/gdi/dib.c?v=wine20040914#L192">192</a>
<a name=L193 href="source/dlls/gdi/dib.c?v=wine20040914#L193">193</a> <b><i>/* when RLE compression is used, there may be some gaps (ie the DIB doesn't</i></b>
<a name=L194 href="source/dlls/gdi/dib.c?v=wine20040914#L194">194</a> <b><i> * contain all the rectangle described in bmiHeader, but only part of it.</i></b>
<a name=L195 href="source/dlls/gdi/dib.c?v=wine20040914#L195">195</a> <b><i> * This mean that those undescribed pixels must be left untouched.</i></b>
<a name=L196 href="source/dlls/gdi/dib.c?v=wine20040914#L196">196</a> <b><i> * So, we first copy on a memory bitmap the current content of the</i></b>
<a name=L197 href="source/dlls/gdi/dib.c?v=wine20040914#L197">197</a> <b><i> * destination rectangle, blit the DIB bits on top of it - hence leaving</i></b>
<a name=L198 href="source/dlls/gdi/dib.c?v=wine20040914#L198">198</a> <b><i> * the gaps untouched -, and blitting the rectangle back.</i></b>
<a name=L199 href="source/dlls/gdi/dib.c?v=wine20040914#L199">199</a> <b><i> * This insure that gaps are untouched on the destination rectangle</i></b>
<a name=L200 href="source/dlls/gdi/dib.c?v=wine20040914#L200">200</a> <b><i> * Not doing so leads to trashed images (the gaps contain what was on the</i></b>
<a name=L201 href="source/dlls/gdi/dib.c?v=wine20040914#L201">201</a> <b><i> * memory bitmap =&gt; generally black or garbage)</i></b>
<a name=L202 href="source/dlls/gdi/dib.c?v=wine20040914#L202">202</a> <b><i> * Unfortunately, RLE DIBs without gaps will be slowed down. But this is</i></b>
<a name=L203 href="source/dlls/gdi/dib.c?v=wine20040914#L203">203</a> <b><i> * another speed vs correctness issue. Anyway, if speed is needed, then the</i></b>
<a name=L204 href="source/dlls/gdi/dib.c?v=wine20040914#L204">204</a> <b><i> * pStretchDIBits function shall be implemented.</i></b>
<a name=L205 href="source/dlls/gdi/dib.c?v=wine20040914#L205">205</a> <b><i> * ericP (2000/09/09)</i></b>
<a name=L206 href="source/dlls/gdi/dib.c?v=wine20040914#L206">206</a> <b><i> */</i></b>
<a name=L207 href="source/dlls/gdi/dib.c?v=wine20040914#L207">207</a>
<a name=L208 href="source/dlls/gdi/dib.c?v=wine20040914#L208">208</a> <b><i>/* copy existing bitmap from destination dc */</i></b>
<a name=L209 href="source/dlls/gdi/dib.c?v=wine20040914#L209">209</a> <a href="ident?v=wine20040914;i=StretchBlt">StretchBlt</a>( hdcMem, xSrc, abs(<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight) - heightSrc - ySrc,
<a name=L210 href="source/dlls/gdi/dib.c?v=wine20040914#L210">210</a> widthSrc, heightSrc, hdc, xDst, yDst, widthDst, heightDst,
<a name=L211 href="source/dlls/gdi/dib.c?v=wine20040914#L211">211</a> dwRop );
<a name=L212 href="source/dlls/gdi/dib.c?v=wine20040914#L212">212</a> }
<a name=L213 href="source/dlls/gdi/dib.c?v=wine20040914#L213">213</a>
<a name=L214 href="source/dlls/gdi/dib.c?v=wine20040914#L214">214</a> <a href="ident?v=wine20040914;i=SetDIBits">SetDIBits</a>(hdcMem, hBitmap, 0, <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight, bits,
<a name=L215 href="source/dlls/gdi/dib.c?v=wine20040914#L215">215</a> <a href="ident?v=wine20040914;i=info">info</a>, wUsage);
<a name=L216 href="source/dlls/gdi/dib.c?v=wine20040914#L216">216</a>
<a name=L217 href="source/dlls/gdi/dib.c?v=wine20040914#L217">217</a> <b><i>/* Origin for DIBitmap may be bottom left (positive biHeight) or top</i></b>
<a name=L218 href="source/dlls/gdi/dib.c?v=wine20040914#L218">218</a> <b><i> left (negative biHeight) */</i></b>
<a name=L219 href="source/dlls/gdi/dib.c?v=wine20040914#L219">219</a> <a href="ident?v=wine20040914;i=StretchBlt">StretchBlt</a>( hdc, xDst, yDst, widthDst, heightDst,
<a name=L220 href="source/dlls/gdi/dib.c?v=wine20040914#L220">220</a> hdcMem, xSrc, abs(<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight) - heightSrc - ySrc,
<a name=L221 href="source/dlls/gdi/dib.c?v=wine20040914#L221">221</a> widthSrc, heightSrc, dwRop );
<a name=L222 href="source/dlls/gdi/dib.c?v=wine20040914#L222">222</a> if(hpal)
<a name=L223 href="source/dlls/gdi/dib.c?v=wine20040914#L223">223</a> <a href="ident?v=wine20040914;i=SelectPalette">SelectPalette</a>(hdcMem, hpal, <a href="ident?v=wine20040914;i=FALSE">FALSE</a>);
<a name=L224 href="source/dlls/gdi/dib.c?v=wine20040914#L224">224</a> <a href="ident?v=wine20040914;i=SelectObject">SelectObject</a>( hdcMem, hOldBitmap );
<a name=L225 href="source/dlls/gdi/dib.c?v=wine20040914#L225">225</a> <a href="ident?v=wine20040914;i=DeleteDC">DeleteDC</a>( hdcMem );
<a name=L226 href="source/dlls/gdi/dib.c?v=wine20040914#L226">226</a> <a href="ident?v=wine20040914;i=DeleteObject">DeleteObject</a>( hBitmap );
<a name=L227 href="source/dlls/gdi/dib.c?v=wine20040914#L227">227</a> }
<a name=L228 href="source/dlls/gdi/dib.c?v=wine20040914#L228">228</a> return heightSrc;
<a name=L229 href="source/dlls/gdi/dib.c?v=wine20040914#L229">229</a> }
<a name=L230 href="source/dlls/gdi/dib.c?v=wine20040914#L230">230</a>
<a name=L231 href="source/dlls/gdi/dib.c?v=wine20040914#L231">231</a>
<a name=L232 href="source/dlls/gdi/dib.c?v=wine20040914#L232">232</a> <b><i>/******************************************************************************</i></b>
<a name=L233 href="source/dlls/gdi/dib.c?v=wine20040914#L233">233</a> <b><i> * SetDIBits [GDI32.@]</i></b>
<a name=L234 href="source/dlls/gdi/dib.c?v=wine20040914#L234">234</a> <b><i> *</i></b>
<a name=L235 href="source/dlls/gdi/dib.c?v=wine20040914#L235">235</a> <b><i> * Sets pixels in a bitmap using colors from DIB.</i></b>
<a name=L236 href="source/dlls/gdi/dib.c?v=wine20040914#L236">236</a> <b><i> *</i></b>
<a name=L237 href="source/dlls/gdi/dib.c?v=wine20040914#L237">237</a> <b><i> * PARAMS</i></b>
<a name=L238 href="source/dlls/gdi/dib.c?v=wine20040914#L238">238</a> <b><i> * hdc [I] Handle to device context</i></b>
<a name=L239 href="source/dlls/gdi/dib.c?v=wine20040914#L239">239</a> <b><i> * hbitmap [I] Handle to bitmap</i></b>
<a name=L240 href="source/dlls/gdi/dib.c?v=wine20040914#L240">240</a> <b><i> * startscan [I] Starting scan line</i></b>
<a name=L241 href="source/dlls/gdi/dib.c?v=wine20040914#L241">241</a> <b><i> * lines [I] Number of scan lines</i></b>
<a name=L242 href="source/dlls/gdi/dib.c?v=wine20040914#L242">242</a> <b><i> * bits [I] Array of bitmap bits</i></b>
<a name=L243 href="source/dlls/gdi/dib.c?v=wine20040914#L243">243</a> <b><i> * info [I] Address of structure with data</i></b>
<a name=L244 href="source/dlls/gdi/dib.c?v=wine20040914#L244">244</a> <b><i> * coloruse [I] Type of color indexes to use</i></b>
<a name=L245 href="source/dlls/gdi/dib.c?v=wine20040914#L245">245</a> <b><i> *</i></b>
<a name=L246 href="source/dlls/gdi/dib.c?v=wine20040914#L246">246</a> <b><i> * RETURNS</i></b>
<a name=L247 href="source/dlls/gdi/dib.c?v=wine20040914#L247">247</a> <b><i> * Success: Number of scan lines copied</i></b>
<a name=L248 href="source/dlls/gdi/dib.c?v=wine20040914#L248">248</a> <b><i> * Failure: 0</i></b>
<a name=L249 href="source/dlls/gdi/dib.c?v=wine20040914#L249">249</a> <b><i> */</i></b>
<a name=L250 href="source/dlls/gdi/dib.c?v=wine20040914#L250">250</a> <a href="ident?v=wine20040914;i=INT">INT</a> <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=SetDIBits">SetDIBits</a>( HDC hdc, HBITMAP hbitmap, UINT startscan,
<a name=L251 href="source/dlls/gdi/dib.c?v=wine20040914#L251">251</a> UINT lines, LPCVOID bits, const BITMAPINFO *<a href="ident?v=wine20040914;i=info">info</a>,
<a name=L252 href="source/dlls/gdi/dib.c?v=wine20040914#L252">252</a> UINT coloruse )
<a name=L253 href="source/dlls/gdi/dib.c?v=wine20040914#L253">253</a> {
<a name=L254 href="source/dlls/gdi/dib.c?v=wine20040914#L254">254</a> <a href="ident?v=wine20040914;i=DC">DC</a> *dc;
<a name=L255 href="source/dlls/gdi/dib.c?v=wine20040914#L255">255</a> <a href="ident?v=wine20040914;i=BITMAPOBJ">BITMAPOBJ</a> *<a href="ident?v=wine20040914;i=bitmap">bitmap</a>;
<a name=L256 href="source/dlls/gdi/dib.c?v=wine20040914#L256">256</a> <a href="ident?v=wine20040914;i=INT">INT</a> result = 0;
<a name=L257 href="source/dlls/gdi/dib.c?v=wine20040914#L257">257</a>
<a name=L258 href="source/dlls/gdi/dib.c?v=wine20040914#L258">258</a> if (!(<a href="ident?v=wine20040914;i=bitmap">bitmap</a> = <a href="ident?v=wine20040914;i=GDI_GetObjPtr">GDI_GetObjPtr</a>( hbitmap, <a href="ident?v=wine20040914;i=BITMAP_MAGIC">BITMAP_MAGIC</a> ))) return 0;
<a name=L259 href="source/dlls/gdi/dib.c?v=wine20040914#L259">259</a>
<a name=L260 href="source/dlls/gdi/dib.c?v=wine20040914#L260">260</a> if (!(dc = <a href="ident?v=wine20040914;i=DC_GetDCUpdate">DC_GetDCUpdate</a>( hdc )))
<a name=L261 href="source/dlls/gdi/dib.c?v=wine20040914#L261">261</a> {
<a name=L262 href="source/dlls/gdi/dib.c?v=wine20040914#L262">262</a> if (coloruse == <a href="ident?v=wine20040914;i=DIB_RGB_COLORS">DIB_RGB_COLORS</a>) <a href="ident?v=wine20040914;i=FIXME">FIXME</a>( <i>"shouldn't require a DC for DIB_RGB_COLORS\n"</i> );
<a name=L263 href="source/dlls/gdi/dib.c?v=wine20040914#L263">263</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hbitmap );
<a name=L264 href="source/dlls/gdi/dib.c?v=wine20040914#L264">264</a> return 0;
<a name=L265 href="source/dlls/gdi/dib.c?v=wine20040914#L265">265</a> }
<a name=L266 href="source/dlls/gdi/dib.c?v=wine20040914#L266">266</a>
<a name=L267 href="source/dlls/gdi/dib.c?v=wine20040914#L267">267</a> if (!<a href="ident?v=wine20040914;i=bitmap">bitmap</a>-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a> &amp;&amp; !<a href="ident?v=wine20040914;i=BITMAP_SetOwnerDC">BITMAP_SetOwnerDC</a>( hbitmap, dc )) goto done;
<a name=L268 href="source/dlls/gdi/dib.c?v=wine20040914#L268">268</a>
<a name=L269 href="source/dlls/gdi/dib.c?v=wine20040914#L269">269</a> if (<a href="ident?v=wine20040914;i=bitmap">bitmap</a>-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a> &amp;&amp; <a href="ident?v=wine20040914;i=bitmap">bitmap</a>-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pSetDIBits)
<a name=L270 href="source/dlls/gdi/dib.c?v=wine20040914#L270">270</a> result = <a href="ident?v=wine20040914;i=bitmap">bitmap</a>-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pSetDIBits( dc-&gt;physDev, hbitmap, startscan, lines,
<a name=L271 href="source/dlls/gdi/dib.c?v=wine20040914#L271">271</a> bits, <a href="ident?v=wine20040914;i=info">info</a>, coloruse );
<a name=L272 href="source/dlls/gdi/dib.c?v=wine20040914#L272">272</a> else
<a name=L273 href="source/dlls/gdi/dib.c?v=wine20040914#L273">273</a> result = lines;
<a name=L274 href="source/dlls/gdi/dib.c?v=wine20040914#L274">274</a>
<a name=L275 href="source/dlls/gdi/dib.c?v=wine20040914#L275">275</a> done:
<a name=L276 href="source/dlls/gdi/dib.c?v=wine20040914#L276">276</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L277 href="source/dlls/gdi/dib.c?v=wine20040914#L277">277</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hbitmap );
<a name=L278 href="source/dlls/gdi/dib.c?v=wine20040914#L278">278</a> return result;
<a name=L279 href="source/dlls/gdi/dib.c?v=wine20040914#L279">279</a> }
<a name=L280 href="source/dlls/gdi/dib.c?v=wine20040914#L280">280</a>
<a name=L281 href="source/dlls/gdi/dib.c?v=wine20040914#L281">281</a>
<a name=L282 href="source/dlls/gdi/dib.c?v=wine20040914#L282">282</a> <b><i>/***********************************************************************</i></b>
<a name=L283 href="source/dlls/gdi/dib.c?v=wine20040914#L283">283</a> <b><i> * SetDIBitsToDevice (GDI32.@)</i></b>
<a name=L284 href="source/dlls/gdi/dib.c?v=wine20040914#L284">284</a> <b><i> */</i></b>
<a name=L285 href="source/dlls/gdi/dib.c?v=wine20040914#L285">285</a> <a href="ident?v=wine20040914;i=INT">INT</a> <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=SetDIBitsToDevice">SetDIBitsToDevice</a>(HDC hdc, <a href="ident?v=wine20040914;i=INT">INT</a> xDest, <a href="ident?v=wine20040914;i=INT">INT</a> yDest, DWORD cx,
<a name=L286 href="source/dlls/gdi/dib.c?v=wine20040914#L286">286</a> DWORD cy, <a href="ident?v=wine20040914;i=INT">INT</a> xSrc, <a href="ident?v=wine20040914;i=INT">INT</a> ySrc, UINT startscan,
<a name=L287 href="source/dlls/gdi/dib.c?v=wine20040914#L287">287</a> UINT lines, LPCVOID bits, const BITMAPINFO *<a href="ident?v=wine20040914;i=info">info</a>,
<a name=L288 href="source/dlls/gdi/dib.c?v=wine20040914#L288">288</a> UINT coloruse )
<a name=L289 href="source/dlls/gdi/dib.c?v=wine20040914#L289">289</a> {
<a name=L290 href="source/dlls/gdi/dib.c?v=wine20040914#L290">290</a> <a href="ident?v=wine20040914;i=INT">INT</a> <a href="ident?v=wine20040914;i=ret">ret</a>;
<a name=L291 href="source/dlls/gdi/dib.c?v=wine20040914#L291">291</a> <a href="ident?v=wine20040914;i=DC">DC</a> *dc;
<a name=L292 href="source/dlls/gdi/dib.c?v=wine20040914#L292">292</a>
<a name=L293 href="source/dlls/gdi/dib.c?v=wine20040914#L293">293</a> if (!(dc = <a href="ident?v=wine20040914;i=DC_GetDCUpdate">DC_GetDCUpdate</a>( hdc ))) return 0;
<a name=L294 href="source/dlls/gdi/dib.c?v=wine20040914#L294">294</a>
<a name=L295 href="source/dlls/gdi/dib.c?v=wine20040914#L295">295</a> if(dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pSetDIBitsToDevice)
<a name=L296 href="source/dlls/gdi/dib.c?v=wine20040914#L296">296</a> <a href="ident?v=wine20040914;i=ret">ret</a> = dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pSetDIBitsToDevice( dc-&gt;physDev, xDest, yDest, cx, cy, xSrc,
<a name=L297 href="source/dlls/gdi/dib.c?v=wine20040914#L297">297</a> ySrc, startscan, lines, bits,
<a name=L298 href="source/dlls/gdi/dib.c?v=wine20040914#L298">298</a> <a href="ident?v=wine20040914;i=info">info</a>, coloruse );
<a name=L299 href="source/dlls/gdi/dib.c?v=wine20040914#L299">299</a> else {
<a name=L300 href="source/dlls/gdi/dib.c?v=wine20040914#L300">300</a> <a href="ident?v=wine20040914;i=FIXME">FIXME</a>(<i>"unimplemented on hdc %p\n"</i>, hdc);
<a name=L301 href="source/dlls/gdi/dib.c?v=wine20040914#L301">301</a> <a href="ident?v=wine20040914;i=ret">ret</a> = 0;
<a name=L302 href="source/dlls/gdi/dib.c?v=wine20040914#L302">302</a> }
<a name=L303 href="source/dlls/gdi/dib.c?v=wine20040914#L303">303</a>
<a name=L304 href="source/dlls/gdi/dib.c?v=wine20040914#L304">304</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L305 href="source/dlls/gdi/dib.c?v=wine20040914#L305">305</a> return <a href="ident?v=wine20040914;i=ret">ret</a>;
<a name=L306 href="source/dlls/gdi/dib.c?v=wine20040914#L306">306</a> }
<a name=L307 href="source/dlls/gdi/dib.c?v=wine20040914#L307">307</a>
<a name=L308 href="source/dlls/gdi/dib.c?v=wine20040914#L308">308</a> <b><i>/***********************************************************************</i></b>
<a name=L309 href="source/dlls/gdi/dib.c?v=wine20040914#L309">309</a> <b><i> * SetDIBColorTable (GDI32.@)</i></b>
<a name=L310 href="source/dlls/gdi/dib.c?v=wine20040914#L310">310</a> <b><i> */</i></b>
<a name=L311 href="source/dlls/gdi/dib.c?v=wine20040914#L311">311</a> UINT <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=SetDIBColorTable">SetDIBColorTable</a>( HDC hdc, UINT startpos, UINT <a href="ident?v=wine20040914;i=entries">entries</a>, RGBQUAD *colors )
<a name=L312 href="source/dlls/gdi/dib.c?v=wine20040914#L312">312</a> {
<a name=L313 href="source/dlls/gdi/dib.c?v=wine20040914#L313">313</a> <a href="ident?v=wine20040914;i=DC">DC</a> * dc;
<a name=L314 href="source/dlls/gdi/dib.c?v=wine20040914#L314">314</a> UINT result = 0;
<a name=L315 href="source/dlls/gdi/dib.c?v=wine20040914#L315">315</a>
<a name=L316 href="source/dlls/gdi/dib.c?v=wine20040914#L316">316</a> if (!(dc = <a href="ident?v=wine20040914;i=DC_GetDCUpdate">DC_GetDCUpdate</a>( hdc ))) return 0;
<a name=L317 href="source/dlls/gdi/dib.c?v=wine20040914#L317">317</a>
<a name=L318 href="source/dlls/gdi/dib.c?v=wine20040914#L318">318</a> if (dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pSetDIBColorTable)
<a name=L319 href="source/dlls/gdi/dib.c?v=wine20040914#L319">319</a> result = dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pSetDIBColorTable(dc-&gt;physDev, startpos, <a href="ident?v=wine20040914;i=entries">entries</a>, colors);
<a name=L320 href="source/dlls/gdi/dib.c?v=wine20040914#L320">320</a>
<a name=L321 href="source/dlls/gdi/dib.c?v=wine20040914#L321">321</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L322 href="source/dlls/gdi/dib.c?v=wine20040914#L322">322</a> return result;
<a name=L323 href="source/dlls/gdi/dib.c?v=wine20040914#L323">323</a> }
<a name=L324 href="source/dlls/gdi/dib.c?v=wine20040914#L324">324</a>
<a name=L325 href="source/dlls/gdi/dib.c?v=wine20040914#L325">325</a>
<a name=L326 href="source/dlls/gdi/dib.c?v=wine20040914#L326">326</a> <b><i>/***********************************************************************</i></b>
<a name=L327 href="source/dlls/gdi/dib.c?v=wine20040914#L327">327</a> <b><i> * GetDIBColorTable (GDI32.@)</i></b>
<a name=L328 href="source/dlls/gdi/dib.c?v=wine20040914#L328">328</a> <b><i> */</i></b>
<a name=L329 href="source/dlls/gdi/dib.c?v=wine20040914#L329">329</a> UINT <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=GetDIBColorTable">GetDIBColorTable</a>( HDC hdc, UINT startpos, UINT <a href="ident?v=wine20040914;i=entries">entries</a>, RGBQUAD *colors )
<a name=L330 href="source/dlls/gdi/dib.c?v=wine20040914#L330">330</a> {
<a name=L331 href="source/dlls/gdi/dib.c?v=wine20040914#L331">331</a> <a href="ident?v=wine20040914;i=DC">DC</a> * dc;
<a name=L332 href="source/dlls/gdi/dib.c?v=wine20040914#L332">332</a> UINT result = 0;
<a name=L333 href="source/dlls/gdi/dib.c?v=wine20040914#L333">333</a>
<a name=L334 href="source/dlls/gdi/dib.c?v=wine20040914#L334">334</a> if (!(dc = <a href="ident?v=wine20040914;i=DC_GetDCUpdate">DC_GetDCUpdate</a>( hdc ))) return 0;
<a name=L335 href="source/dlls/gdi/dib.c?v=wine20040914#L335">335</a>
<a name=L336 href="source/dlls/gdi/dib.c?v=wine20040914#L336">336</a> if (dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pGetDIBColorTable)
<a name=L337 href="source/dlls/gdi/dib.c?v=wine20040914#L337">337</a> result = dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pGetDIBColorTable(dc-&gt;physDev, startpos, <a href="ident?v=wine20040914;i=entries">entries</a>, colors);
<a name=L338 href="source/dlls/gdi/dib.c?v=wine20040914#L338">338</a>
<a name=L339 href="source/dlls/gdi/dib.c?v=wine20040914#L339">339</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L340 href="source/dlls/gdi/dib.c?v=wine20040914#L340">340</a> return result;
<a name=L341 href="source/dlls/gdi/dib.c?v=wine20040914#L341">341</a> }
<a name=L342 href="source/dlls/gdi/dib.c?v=wine20040914#L342">342</a>
<a name=L343 href="source/dlls/gdi/dib.c?v=wine20040914#L343">343</a> <b><i>/* FIXME the following two structs should be combined with __sysPalTemplate in</i></b>
<a name=L344 href="source/dlls/gdi/dib.c?v=wine20040914#L344">344</a> <b><i> objects/color.c - this should happen after de-X11-ing both of these</i></b>
<a name=L345 href="source/dlls/gdi/dib.c?v=wine20040914#L345">345</a> <b><i> files.</i></b>
<a name=L346 href="source/dlls/gdi/dib.c?v=wine20040914#L346">346</a> <b><i> NB. RGBQUAD and PALETTEENTRY have different orderings of red, green</i></b>
<a name=L347 href="source/dlls/gdi/dib.c?v=wine20040914#L347">347</a> <b><i> and blue - sigh */</i></b>
<a name=L348 href="source/dlls/gdi/dib.c?v=wine20040914#L348">348</a>
<a name=L349 href="source/dlls/gdi/dib.c?v=wine20040914#L349">349</a> static RGBQUAD <a href="ident?v=wine20040914;i=EGAColors">EGAColors</a>[16] = {
<a name=L350 href="source/dlls/gdi/dib.c?v=wine20040914#L350">350</a> <b><i>/* rgbBlue, rgbGreen, rgbRed, rgbReserverd */</i></b>
<a name=L351 href="source/dlls/gdi/dib.c?v=wine20040914#L351">351</a> { 0x00, 0x00, 0x00, 0x00 },
<a name=L352 href="source/dlls/gdi/dib.c?v=wine20040914#L352">352</a> { 0x00, 0x00, 0x80, 0x00 },
<a name=L353 href="source/dlls/gdi/dib.c?v=wine20040914#L353">353</a> { 0x00, 0x80, 0x00, 0x00 },
<a name=L354 href="source/dlls/gdi/dib.c?v=wine20040914#L354">354</a> { 0x00, 0x80, 0x80, 0x00 },
<a name=L355 href="source/dlls/gdi/dib.c?v=wine20040914#L355">355</a> { 0x80, 0x00, 0x00, 0x00 },
<a name=L356 href="source/dlls/gdi/dib.c?v=wine20040914#L356">356</a> { 0x80, 0x00, 0x80, 0x00 },
<a name=L357 href="source/dlls/gdi/dib.c?v=wine20040914#L357">357</a> { 0x80, 0x80, 0x00, 0x00 },
<a name=L358 href="source/dlls/gdi/dib.c?v=wine20040914#L358">358</a> { 0x80, 0x80, 0x80, 0x00 },
<a name=L359 href="source/dlls/gdi/dib.c?v=wine20040914#L359">359</a> { 0xc0, 0xc0, 0xc0, 0x00 },
<a name=L360 href="source/dlls/gdi/dib.c?v=wine20040914#L360">360</a> { 0x00, 0x00, 0xff, 0x00 },
<a name=L361 href="source/dlls/gdi/dib.c?v=wine20040914#L361">361</a> { 0x00, 0xff, 0x00, 0x00 },
<a name=L362 href="source/dlls/gdi/dib.c?v=wine20040914#L362">362</a> { 0x00, 0xff, 0xff, 0x00 },
<a name=L363 href="source/dlls/gdi/dib.c?v=wine20040914#L363">363</a> { 0xff, 0x00, 0x00, 0x00 },
<a name=L364 href="source/dlls/gdi/dib.c?v=wine20040914#L364">364</a> { 0xff, 0x00, 0xff, 0x00 },
<a name=L365 href="source/dlls/gdi/dib.c?v=wine20040914#L365">365</a> { 0xff, 0xff, 0x00, 0x00 },
<a name=L366 href="source/dlls/gdi/dib.c?v=wine20040914#L366">366</a> { 0xff, 0xff, 0xff, 0x00 }
<a name=L367 href="source/dlls/gdi/dib.c?v=wine20040914#L367">367</a> };
<a name=L368 href="source/dlls/gdi/dib.c?v=wine20040914#L368">368</a>
<a name=L369 href="source/dlls/gdi/dib.c?v=wine20040914#L369">369</a>
<a name=L370 href="source/dlls/gdi/dib.c?v=wine20040914#L370">370</a> static RGBQUAD <a href="ident?v=wine20040914;i=DefLogPalette">DefLogPalette</a>[20] = { <b><i>/* Copy of Default Logical Palette */</i></b>
<a name=L371 href="source/dlls/gdi/dib.c?v=wine20040914#L371">371</a> <b><i>/* rgbBlue, rgbGreen, rgbRed, rgbReserverd */</i></b>
<a name=L372 href="source/dlls/gdi/dib.c?v=wine20040914#L372">372</a> { 0x00, 0x00, 0x00, 0x00 },
<a name=L373 href="source/dlls/gdi/dib.c?v=wine20040914#L373">373</a> { 0x00, 0x00, 0x80, 0x00 },
<a name=L374 href="source/dlls/gdi/dib.c?v=wine20040914#L374">374</a> { 0x00, 0x80, 0x00, 0x00 },
<a name=L375 href="source/dlls/gdi/dib.c?v=wine20040914#L375">375</a> { 0x00, 0x80, 0x80, 0x00 },
<a name=L376 href="source/dlls/gdi/dib.c?v=wine20040914#L376">376</a> { 0x80, 0x00, 0x00, 0x00 },
<a name=L377 href="source/dlls/gdi/dib.c?v=wine20040914#L377">377</a> { 0x80, 0x00, 0x80, 0x00 },
<a name=L378 href="source/dlls/gdi/dib.c?v=wine20040914#L378">378</a> { 0x80, 0x80, 0x00, 0x00 },
<a name=L379 href="source/dlls/gdi/dib.c?v=wine20040914#L379">379</a> { 0xc0, 0xc0, 0xc0, 0x00 },
<a name=L380 href="source/dlls/gdi/dib.c?v=wine20040914#L380">380</a> { 0xc0, 0xdc, 0xc0, 0x00 },
<a name=L381 href="source/dlls/gdi/dib.c?v=wine20040914#L381">381</a> { 0xf0, 0xca, 0xa6, 0x00 },
<a name=L382 href="source/dlls/gdi/dib.c?v=wine20040914#L382">382</a> { 0xf0, 0xfb, 0xff, 0x00 },
<a name=L383 href="source/dlls/gdi/dib.c?v=wine20040914#L383">383</a> { 0xa4, 0xa0, 0xa0, 0x00 },
<a name=L384 href="source/dlls/gdi/dib.c?v=wine20040914#L384">384</a> { 0x80, 0x80, 0x80, 0x00 },
<a name=L385 href="source/dlls/gdi/dib.c?v=wine20040914#L385">385</a> { 0x00, 0x00, 0xf0, 0x00 },
<a name=L386 href="source/dlls/gdi/dib.c?v=wine20040914#L386">386</a> { 0x00, 0xff, 0x00, 0x00 },
<a name=L387 href="source/dlls/gdi/dib.c?v=wine20040914#L387">387</a> { 0x00, 0xff, 0xff, 0x00 },
<a name=L388 href="source/dlls/gdi/dib.c?v=wine20040914#L388">388</a> { 0xff, 0x00, 0x00, 0x00 },
<a name=L389 href="source/dlls/gdi/dib.c?v=wine20040914#L389">389</a> { 0xff, 0x00, 0xff, 0x00 },
<a name=L390 href="source/dlls/gdi/dib.c?v=wine20040914#L390">390</a> { 0xff, 0xff, 0x00, 0x00 },
<a name=L391 href="source/dlls/gdi/dib.c?v=wine20040914#L391">391</a> { 0xff, 0xff, 0xff, 0x00 }
<a name=L392 href="source/dlls/gdi/dib.c?v=wine20040914#L392">392</a> };
<a name=L393 href="source/dlls/gdi/dib.c?v=wine20040914#L393">393</a>
<a name=L394 href="source/dlls/gdi/dib.c?v=wine20040914#L394">394</a>
<a name=L395 href="source/dlls/gdi/dib.c?v=wine20040914#L395">395</a> <b><i>/******************************************************************************</i></b>
<a name=L396 href="source/dlls/gdi/dib.c?v=wine20040914#L396">396</a> <b><i> * GetDIBits [GDI32.@]</i></b>
<a name=L397 href="source/dlls/gdi/dib.c?v=wine20040914#L397">397</a> <b><i> *</i></b>
<a name=L398 href="source/dlls/gdi/dib.c?v=wine20040914#L398">398</a> <b><i> * Retrieves bits of bitmap and copies to buffer.</i></b>
<a name=L399 href="source/dlls/gdi/dib.c?v=wine20040914#L399">399</a> <b><i> *</i></b>
<a name=L400 href="source/dlls/gdi/dib.c?v=wine20040914#L400">400</a> <b><i> * RETURNS</i></b>
<a name=L401 href="source/dlls/gdi/dib.c?v=wine20040914#L401">401</a> <b><i> * Success: Number of scan lines copied from bitmap</i></b>
<a name=L402 href="source/dlls/gdi/dib.c?v=wine20040914#L402">402</a> <b><i> * Failure: 0</i></b>
<a name=L403 href="source/dlls/gdi/dib.c?v=wine20040914#L403">403</a> <b><i> *</i></b>
<a name=L404 href="source/dlls/gdi/dib.c?v=wine20040914#L404">404</a> <b><i> * <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_87eb.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_87eb.asp</a></i></b>
<a name=L405 href="source/dlls/gdi/dib.c?v=wine20040914#L405">405</a> <b><i> */</i></b>
<a name=L406 href="source/dlls/gdi/dib.c?v=wine20040914#L406">406</a> <a href="ident?v=wine20040914;i=INT">INT</a> <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=GetDIBits">GetDIBits</a>(
<a name=L407 href="source/dlls/gdi/dib.c?v=wine20040914#L407">407</a> HDC hdc, <b><i>/* [in] Handle to device context */</i></b>
<a name=L408 href="source/dlls/gdi/dib.c?v=wine20040914#L408">408</a> HBITMAP hbitmap, <b><i>/* [in] Handle to bitmap */</i></b>
<a name=L409 href="source/dlls/gdi/dib.c?v=wine20040914#L409">409</a> UINT startscan, <b><i>/* [in] First scan line to set in dest bitmap */</i></b>
<a name=L410 href="source/dlls/gdi/dib.c?v=wine20040914#L410">410</a> UINT lines, <b><i>/* [in] Number of scan lines to copy */</i></b>
<a name=L411 href="source/dlls/gdi/dib.c?v=wine20040914#L411">411</a> LPVOID bits, <b><i>/* [out] Address of array for bitmap bits */</i></b>
<a name=L412 href="source/dlls/gdi/dib.c?v=wine20040914#L412">412</a> BITMAPINFO * <a href="ident?v=wine20040914;i=info">info</a>, <b><i>/* [out] Address of structure with bitmap data */</i></b>
<a name=L413 href="source/dlls/gdi/dib.c?v=wine20040914#L413">413</a> UINT coloruse) <b><i>/* [in] RGB or palette index */</i></b>
<a name=L414 href="source/dlls/gdi/dib.c?v=wine20040914#L414">414</a> {
<a name=L415 href="source/dlls/gdi/dib.c?v=wine20040914#L415">415</a> <a href="ident?v=wine20040914;i=DC">DC</a> * dc;
<a name=L416 href="source/dlls/gdi/dib.c?v=wine20040914#L416">416</a> <a href="ident?v=wine20040914;i=BITMAPOBJ">BITMAPOBJ</a> * bmp;
<a name=L417 href="source/dlls/gdi/dib.c?v=wine20040914#L417">417</a> int <a href="ident?v=wine20040914;i=i">i</a>;
<a name=L418 href="source/dlls/gdi/dib.c?v=wine20040914#L418">418</a> HDC memdc;
<a name=L419 href="source/dlls/gdi/dib.c?v=wine20040914#L419">419</a>
<a name=L420 href="source/dlls/gdi/dib.c?v=wine20040914#L420">420</a> if (!<a href="ident?v=wine20040914;i=info">info</a>) return 0;
<a name=L421 href="source/dlls/gdi/dib.c?v=wine20040914#L421">421</a> memdc = <a href="ident?v=wine20040914;i=CreateCompatibleDC">CreateCompatibleDC</a>(hdc);
<a name=L422 href="source/dlls/gdi/dib.c?v=wine20040914#L422">422</a> if (!(dc = <a href="ident?v=wine20040914;i=DC_GetDCUpdate">DC_GetDCUpdate</a>( hdc )))
<a name=L423 href="source/dlls/gdi/dib.c?v=wine20040914#L423">423</a> {
<a name=L424 href="source/dlls/gdi/dib.c?v=wine20040914#L424">424</a> <a href="ident?v=wine20040914;i=DeleteDC">DeleteDC</a>(memdc);
<a name=L425 href="source/dlls/gdi/dib.c?v=wine20040914#L425">425</a> return 0;
<a name=L426 href="source/dlls/gdi/dib.c?v=wine20040914#L426">426</a> }
<a name=L427 href="source/dlls/gdi/dib.c?v=wine20040914#L427">427</a> if (!(bmp = (<a href="ident?v=wine20040914;i=BITMAPOBJ">BITMAPOBJ</a> *)<a href="ident?v=wine20040914;i=GDI_GetObjPtr">GDI_GetObjPtr</a>( hbitmap, <a href="ident?v=wine20040914;i=BITMAP_MAGIC">BITMAP_MAGIC</a> )))
<a name=L428 href="source/dlls/gdi/dib.c?v=wine20040914#L428">428</a> {
<a name=L429 href="source/dlls/gdi/dib.c?v=wine20040914#L429">429</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L430 href="source/dlls/gdi/dib.c?v=wine20040914#L430">430</a> <a href="ident?v=wine20040914;i=DeleteDC">DeleteDC</a>(memdc);
<a name=L431 href="source/dlls/gdi/dib.c?v=wine20040914#L431">431</a> return 0;
<a name=L432 href="source/dlls/gdi/dib.c?v=wine20040914#L432">432</a> }
<a name=L433 href="source/dlls/gdi/dib.c?v=wine20040914#L433">433</a>
<a name=L434 href="source/dlls/gdi/dib.c?v=wine20040914#L434">434</a> <b><i>/* Transfer color info */</i></b>
<a name=L435 href="source/dlls/gdi/dib.c?v=wine20040914#L435">435</a>
<a name=L436 href="source/dlls/gdi/dib.c?v=wine20040914#L436">436</a> if (<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount &lt;= 8 &amp;&amp; <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount &gt; 0 ) {
<a name=L437 href="source/dlls/gdi/dib.c?v=wine20040914#L437">437</a>
<a name=L438 href="source/dlls/gdi/dib.c?v=wine20040914#L438">438</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biClrUsed = 0;
<a name=L439 href="source/dlls/gdi/dib.c?v=wine20040914#L439">439</a>
<a name=L440 href="source/dlls/gdi/dib.c?v=wine20040914#L440">440</a> <b><i>/* If the bitmap object already has a dib section at the</i></b>
<a name=L441 href="source/dlls/gdi/dib.c?v=wine20040914#L441">441</a> <b><i> same color depth then get the color map from it */</i></b>
<a name=L442 href="source/dlls/gdi/dib.c?v=wine20040914#L442">442</a> if (bmp-&gt;dib &amp;&amp; bmp-&gt;dib-&gt;dsBm.bmBitsPixel == <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount) {
<a name=L443 href="source/dlls/gdi/dib.c?v=wine20040914#L443">443</a> if(coloruse == <a href="ident?v=wine20040914;i=DIB_RGB_COLORS">DIB_RGB_COLORS</a>) {
<a name=L444 href="source/dlls/gdi/dib.c?v=wine20040914#L444">444</a> HBITMAP oldbm;
<a name=L445 href="source/dlls/gdi/dib.c?v=wine20040914#L445">445</a> oldbm = <a href="ident?v=wine20040914;i=SelectObject">SelectObject</a>(memdc, hbitmap);
<a name=L446 href="source/dlls/gdi/dib.c?v=wine20040914#L446">446</a> <a href="ident?v=wine20040914;i=GetDIBColorTable">GetDIBColorTable</a>(memdc, 0, 1 &lt;&lt; <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount, <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors);
<a name=L447 href="source/dlls/gdi/dib.c?v=wine20040914#L447">447</a> <a href="ident?v=wine20040914;i=SelectObject">SelectObject</a>(memdc, oldbm);
<a name=L448 href="source/dlls/gdi/dib.c?v=wine20040914#L448">448</a> }
<a name=L449 href="source/dlls/gdi/dib.c?v=wine20040914#L449">449</a> else {
<a name=L450 href="source/dlls/gdi/dib.c?v=wine20040914#L450">450</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> *index = (<a href="ident?v=wine20040914;i=WORD">WORD</a>*)<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors;
<a name=L451 href="source/dlls/gdi/dib.c?v=wine20040914#L451">451</a> int <a href="ident?v=wine20040914;i=i">i</a>;
<a name=L452 href="source/dlls/gdi/dib.c?v=wine20040914#L452">452</a> for(<a href="ident?v=wine20040914;i=i">i</a> = 0; <a href="ident?v=wine20040914;i=i">i</a> &lt; 1 &lt;&lt; <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount; <a href="ident?v=wine20040914;i=i">i</a>++, index++)
<a name=L453 href="source/dlls/gdi/dib.c?v=wine20040914#L453">453</a> *index = <a href="ident?v=wine20040914;i=i">i</a>;
<a name=L454 href="source/dlls/gdi/dib.c?v=wine20040914#L454">454</a> }
<a name=L455 href="source/dlls/gdi/dib.c?v=wine20040914#L455">455</a> }
<a name=L456 href="source/dlls/gdi/dib.c?v=wine20040914#L456">456</a> else {
<a name=L457 href="source/dlls/gdi/dib.c?v=wine20040914#L457">457</a> if(<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount &gt;= bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel) {
<a name=L458 href="source/dlls/gdi/dib.c?v=wine20040914#L458">458</a> <b><i>/* Generate the color map from the selected palette */</i></b>
<a name=L459 href="source/dlls/gdi/dib.c?v=wine20040914#L459">459</a> PALETTEENTRY * palEntry;
<a name=L460 href="source/dlls/gdi/dib.c?v=wine20040914#L460">460</a> <a href="ident?v=wine20040914;i=PALETTEOBJ">PALETTEOBJ</a> * palette;
<a name=L461 href="source/dlls/gdi/dib.c?v=wine20040914#L461">461</a> if (!(palette = (<a href="ident?v=wine20040914;i=PALETTEOBJ">PALETTEOBJ</a>*)<a href="ident?v=wine20040914;i=GDI_GetObjPtr">GDI_GetObjPtr</a>( dc-&gt;hPalette, <a href="ident?v=wine20040914;i=PALETTE_MAGIC">PALETTE_MAGIC</a> ))) {
<a name=L462 href="source/dlls/gdi/dib.c?v=wine20040914#L462">462</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L463 href="source/dlls/gdi/dib.c?v=wine20040914#L463">463</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hbitmap );
<a name=L464 href="source/dlls/gdi/dib.c?v=wine20040914#L464">464</a> <a href="ident?v=wine20040914;i=DeleteDC">DeleteDC</a>(memdc);
<a name=L465 href="source/dlls/gdi/dib.c?v=wine20040914#L465">465</a> return 0;
<a name=L466 href="source/dlls/gdi/dib.c?v=wine20040914#L466">466</a> }
<a name=L467 href="source/dlls/gdi/dib.c?v=wine20040914#L467">467</a> palEntry = palette-&gt;logpalette.palPalEntry;
<a name=L468 href="source/dlls/gdi/dib.c?v=wine20040914#L468">468</a> for (<a href="ident?v=wine20040914;i=i">i</a> = 0; <a href="ident?v=wine20040914;i=i">i</a> &lt; (1 &lt;&lt; bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel); <a href="ident?v=wine20040914;i=i">i</a>++, palEntry++) {
<a name=L469 href="source/dlls/gdi/dib.c?v=wine20040914#L469">469</a> if (coloruse == <a href="ident?v=wine20040914;i=DIB_RGB_COLORS">DIB_RGB_COLORS</a>) {
<a name=L470 href="source/dlls/gdi/dib.c?v=wine20040914#L470">470</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[<a href="ident?v=wine20040914;i=i">i</a>].rgbRed = palEntry-&gt;peRed;
<a name=L471 href="source/dlls/gdi/dib.c?v=wine20040914#L471">471</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[<a href="ident?v=wine20040914;i=i">i</a>].rgbGreen = palEntry-&gt;peGreen;
<a name=L472 href="source/dlls/gdi/dib.c?v=wine20040914#L472">472</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[<a href="ident?v=wine20040914;i=i">i</a>].rgbBlue = palEntry-&gt;peBlue;
<a name=L473 href="source/dlls/gdi/dib.c?v=wine20040914#L473">473</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[<a href="ident?v=wine20040914;i=i">i</a>].rgbReserved = 0;
<a name=L474 href="source/dlls/gdi/dib.c?v=wine20040914#L474">474</a> }
<a name=L475 href="source/dlls/gdi/dib.c?v=wine20040914#L475">475</a> else ((<a href="ident?v=wine20040914;i=WORD">WORD</a> *)<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors)[<a href="ident?v=wine20040914;i=i">i</a>] = (<a href="ident?v=wine20040914;i=WORD">WORD</a>)<a href="ident?v=wine20040914;i=i">i</a>;
<a name=L476 href="source/dlls/gdi/dib.c?v=wine20040914#L476">476</a> }
<a name=L477 href="source/dlls/gdi/dib.c?v=wine20040914#L477">477</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( dc-&gt;hPalette );
<a name=L478 href="source/dlls/gdi/dib.c?v=wine20040914#L478">478</a> } else {
<a name=L479 href="source/dlls/gdi/dib.c?v=wine20040914#L479">479</a> switch (<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount) {
<a name=L480 href="source/dlls/gdi/dib.c?v=wine20040914#L480">480</a> case 1:
<a name=L481 href="source/dlls/gdi/dib.c?v=wine20040914#L481">481</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[0].rgbRed = <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[0].rgbGreen =
<a name=L482 href="source/dlls/gdi/dib.c?v=wine20040914#L482">482</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[0].rgbBlue = 0;
<a name=L483 href="source/dlls/gdi/dib.c?v=wine20040914#L483">483</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[0].rgbReserved = 0;
<a name=L484 href="source/dlls/gdi/dib.c?v=wine20040914#L484">484</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[1].rgbRed = <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[1].rgbGreen =
<a name=L485 href="source/dlls/gdi/dib.c?v=wine20040914#L485">485</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[1].rgbBlue = 0xff;
<a name=L486 href="source/dlls/gdi/dib.c?v=wine20040914#L486">486</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors[1].rgbReserved = 0;
<a name=L487 href="source/dlls/gdi/dib.c?v=wine20040914#L487">487</a> break;
<a name=L488 href="source/dlls/gdi/dib.c?v=wine20040914#L488">488</a>
<a name=L489 href="source/dlls/gdi/dib.c?v=wine20040914#L489">489</a> case 4:
<a name=L490 href="source/dlls/gdi/dib.c?v=wine20040914#L490">490</a> memcpy(<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors, <a href="ident?v=wine20040914;i=EGAColors">EGAColors</a>, sizeof(<a href="ident?v=wine20040914;i=EGAColors">EGAColors</a>));
<a name=L491 href="source/dlls/gdi/dib.c?v=wine20040914#L491">491</a> break;
<a name=L492 href="source/dlls/gdi/dib.c?v=wine20040914#L492">492</a>
<a name=L493 href="source/dlls/gdi/dib.c?v=wine20040914#L493">493</a> case 8:
<a name=L494 href="source/dlls/gdi/dib.c?v=wine20040914#L494">494</a> {
<a name=L495 href="source/dlls/gdi/dib.c?v=wine20040914#L495">495</a> <a href="ident?v=wine20040914;i=INT">INT</a> r, g, b;
<a name=L496 href="source/dlls/gdi/dib.c?v=wine20040914#L496">496</a> RGBQUAD *color;
<a name=L497 href="source/dlls/gdi/dib.c?v=wine20040914#L497">497</a>
<a name=L498 href="source/dlls/gdi/dib.c?v=wine20040914#L498">498</a> memcpy(<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors, <a href="ident?v=wine20040914;i=DefLogPalette">DefLogPalette</a>,
<a name=L499 href="source/dlls/gdi/dib.c?v=wine20040914#L499">499</a> 10 * sizeof(RGBQUAD));
<a name=L500 href="source/dlls/gdi/dib.c?v=wine20040914#L500">500</a> memcpy(<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors + 246, <a href="ident?v=wine20040914;i=DefLogPalette">DefLogPalette</a> + 10,
<a name=L501 href="source/dlls/gdi/dib.c?v=wine20040914#L501">501</a> 10 * sizeof(RGBQUAD));
<a name=L502 href="source/dlls/gdi/dib.c?v=wine20040914#L502">502</a> color = <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiColors + 10;
<a name=L503 href="source/dlls/gdi/dib.c?v=wine20040914#L503">503</a> for(r = 0; r &lt;= 5; r++) <b><i>/* FIXME */</i></b>
<a name=L504 href="source/dlls/gdi/dib.c?v=wine20040914#L504">504</a> for(g = 0; g &lt;= 5; g++)
<a name=L505 href="source/dlls/gdi/dib.c?v=wine20040914#L505">505</a> for(b = 0; b &lt;= 5; b++) {
<a name=L506 href="source/dlls/gdi/dib.c?v=wine20040914#L506">506</a> color-&gt;rgbRed = (r * 0xff) / 5;
<a name=L507 href="source/dlls/gdi/dib.c?v=wine20040914#L507">507</a> color-&gt;rgbGreen = (g * 0xff) / 5;
<a name=L508 href="source/dlls/gdi/dib.c?v=wine20040914#L508">508</a> color-&gt;rgbBlue = (b * 0xff) / 5;
<a name=L509 href="source/dlls/gdi/dib.c?v=wine20040914#L509">509</a> color-&gt;rgbReserved = 0;
<a name=L510 href="source/dlls/gdi/dib.c?v=wine20040914#L510">510</a> color++;
<a name=L511 href="source/dlls/gdi/dib.c?v=wine20040914#L511">511</a> }
<a name=L512 href="source/dlls/gdi/dib.c?v=wine20040914#L512">512</a> }
<a name=L513 href="source/dlls/gdi/dib.c?v=wine20040914#L513">513</a> }
<a name=L514 href="source/dlls/gdi/dib.c?v=wine20040914#L514">514</a> }
<a name=L515 href="source/dlls/gdi/dib.c?v=wine20040914#L515">515</a> }
<a name=L516 href="source/dlls/gdi/dib.c?v=wine20040914#L516">516</a> }
<a name=L517 href="source/dlls/gdi/dib.c?v=wine20040914#L517">517</a>
<a name=L518 href="source/dlls/gdi/dib.c?v=wine20040914#L518">518</a> if (bits &amp;&amp; lines)
<a name=L519 href="source/dlls/gdi/dib.c?v=wine20040914#L519">519</a> {
<a name=L520 href="source/dlls/gdi/dib.c?v=wine20040914#L520">520</a> <b><i>/* If the bitmap object already have a dib section that contains image data, get the bits from it */</i></b>
<a name=L521 href="source/dlls/gdi/dib.c?v=wine20040914#L521">521</a> if(bmp-&gt;dib &amp;&amp; bmp-&gt;dib-&gt;dsBm.bmBitsPixel &gt;= 15 &amp;&amp; <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount &gt;= 15)
<a name=L522 href="source/dlls/gdi/dib.c?v=wine20040914#L522">522</a> {
<a name=L523 href="source/dlls/gdi/dib.c?v=wine20040914#L523">523</a> <b><i>/*FIXME: Only RGB dibs supported for now */</i></b>
<a name=L524 href="source/dlls/gdi/dib.c?v=wine20040914#L524">524</a> unsigned int srcwidth = bmp-&gt;dib-&gt;dsBm.bmWidth, srcwidthb = bmp-&gt;dib-&gt;dsBm.bmWidthBytes;
<a name=L525 href="source/dlls/gdi/dib.c?v=wine20040914#L525">525</a> unsigned int dstwidth = <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biWidth;
<a name=L526 href="source/dlls/gdi/dib.c?v=wine20040914#L526">526</a> int dstwidthb = <a href="ident?v=wine20040914;i=DIB_GetDIBWidthBytes">DIB_GetDIBWidthBytes</a>( <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biWidth, <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount );
<a name=L527 href="source/dlls/gdi/dib.c?v=wine20040914#L527">527</a> LPBYTE dbits = bits, sbits = (LPBYTE) bmp-&gt;dib-&gt;dsBm.bmBits + (startscan * srcwidthb);
<a name=L528 href="source/dlls/gdi/dib.c?v=wine20040914#L528">528</a> unsigned int x, y, <a href="ident?v=wine20040914;i=width">width</a>, widthb;
<a name=L529 href="source/dlls/gdi/dib.c?v=wine20040914#L529">529</a>
<a name=L530 href="source/dlls/gdi/dib.c?v=wine20040914#L530">530</a> if ((<a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight &lt; 0) ^ (bmp-&gt;dib-&gt;dsBmih.biHeight &lt; 0))
<a name=L531 href="source/dlls/gdi/dib.c?v=wine20040914#L531">531</a> {
<a name=L532 href="source/dlls/gdi/dib.c?v=wine20040914#L532">532</a> dbits = (LPBYTE)bits + (dstwidthb * (lines-1));
<a name=L533 href="source/dlls/gdi/dib.c?v=wine20040914#L533">533</a> dstwidthb = -dstwidthb;
<a name=L534 href="source/dlls/gdi/dib.c?v=wine20040914#L534">534</a> }
<a name=L535 href="source/dlls/gdi/dib.c?v=wine20040914#L535">535</a>
<a name=L536 href="source/dlls/gdi/dib.c?v=wine20040914#L536">536</a> switch( <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount ) {
<a name=L537 href="source/dlls/gdi/dib.c?v=wine20040914#L537">537</a>
<a name=L538 href="source/dlls/gdi/dib.c?v=wine20040914#L538">538</a> case 15:
<a name=L539 href="source/dlls/gdi/dib.c?v=wine20040914#L539">539</a> case 16: <b><i>/* 16 bpp dstDIB */</i></b>
<a name=L540 href="source/dlls/gdi/dib.c?v=wine20040914#L540">540</a> {
<a name=L541 href="source/dlls/gdi/dib.c?v=wine20040914#L541">541</a> LPWORD dstbits = (LPWORD)dbits;
<a name=L542 href="source/dlls/gdi/dib.c?v=wine20040914#L542">542</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> rmask = 0x7c00, gmask= 0x03e0, bmask = 0x001f;
<a name=L543 href="source/dlls/gdi/dib.c?v=wine20040914#L543">543</a>
<a name=L544 href="source/dlls/gdi/dib.c?v=wine20040914#L544">544</a> <b><i>/* FIXME: BI_BITFIELDS not supported yet */</i></b>
<a name=L545 href="source/dlls/gdi/dib.c?v=wine20040914#L545">545</a>
<a name=L546 href="source/dlls/gdi/dib.c?v=wine20040914#L546">546</a> switch(bmp-&gt;dib-&gt;dsBm.bmBitsPixel) {
<a name=L547 href="source/dlls/gdi/dib.c?v=wine20040914#L547">547</a>
<a name=L548 href="source/dlls/gdi/dib.c?v=wine20040914#L548">548</a> case 16: <b><i>/* 16 bpp srcDIB -&gt; 16 bpp dstDIB */</i></b>
<a name=L549 href="source/dlls/gdi/dib.c?v=wine20040914#L549">549</a> {
<a name=L550 href="source/dlls/gdi/dib.c?v=wine20040914#L550">550</a> widthb = <a href="ident?v=wine20040914;i=min">min</a>(srcwidthb, abs(dstwidthb));
<a name=L551 href="source/dlls/gdi/dib.c?v=wine20040914#L551">551</a> <b><i>/* FIXME: BI_BITFIELDS not supported yet */</i></b>
<a name=L552 href="source/dlls/gdi/dib.c?v=wine20040914#L552">552</a> for (y = 0; y &lt; lines; y++, dbits+=dstwidthb, sbits+=srcwidthb)
<a name=L553 href="source/dlls/gdi/dib.c?v=wine20040914#L553">553</a> memcpy(dbits, sbits, widthb);
<a name=L554 href="source/dlls/gdi/dib.c?v=wine20040914#L554">554</a> }
<a name=L555 href="source/dlls/gdi/dib.c?v=wine20040914#L555">555</a> break;
<a name=L556 href="source/dlls/gdi/dib.c?v=wine20040914#L556">556</a>
<a name=L557 href="source/dlls/gdi/dib.c?v=wine20040914#L557">557</a> case 24: <b><i>/* 24 bpp srcDIB -&gt; 16 bpp dstDIB */</i></b>
<a name=L558 href="source/dlls/gdi/dib.c?v=wine20040914#L558">558</a> {
<a name=L559 href="source/dlls/gdi/dib.c?v=wine20040914#L559">559</a> LPBYTE srcbits = sbits;
<a name=L560 href="source/dlls/gdi/dib.c?v=wine20040914#L560">560</a>
<a name=L561 href="source/dlls/gdi/dib.c?v=wine20040914#L561">561</a> <a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=min">min</a>(srcwidth, dstwidth);
<a name=L562 href="source/dlls/gdi/dib.c?v=wine20040914#L562">562</a> for( y = 0; y &lt; lines; y++) {
<a name=L563 href="source/dlls/gdi/dib.c?v=wine20040914#L563">563</a> for( x = 0; x &lt; <a href="ident?v=wine20040914;i=width">width</a>; x++, srcbits += 3)
<a name=L564 href="source/dlls/gdi/dib.c?v=wine20040914#L564">564</a> *dstbits++ = ((srcbits[0] &gt;&gt; 3) &amp; bmask) |
<a name=L565 href="source/dlls/gdi/dib.c?v=wine20040914#L565">565</a> (((<a href="ident?v=wine20040914;i=WORD">WORD</a>)srcbits[1] &lt;&lt; 2) &amp; gmask) |
<a name=L566 href="source/dlls/gdi/dib.c?v=wine20040914#L566">566</a> (((<a href="ident?v=wine20040914;i=WORD">WORD</a>)srcbits[2] &lt;&lt; 7) &amp; rmask);
<a name=L567 href="source/dlls/gdi/dib.c?v=wine20040914#L567">567</a>
<a name=L568 href="source/dlls/gdi/dib.c?v=wine20040914#L568">568</a> dstbits = (LPWORD)(dbits+=dstwidthb);
<a name=L569 href="source/dlls/gdi/dib.c?v=wine20040914#L569">569</a> srcbits = (sbits += srcwidthb);
<a name=L570 href="source/dlls/gdi/dib.c?v=wine20040914#L570">570</a> }
<a name=L571 href="source/dlls/gdi/dib.c?v=wine20040914#L571">571</a> }
<a name=L572 href="source/dlls/gdi/dib.c?v=wine20040914#L572">572</a> break;
<a name=L573 href="source/dlls/gdi/dib.c?v=wine20040914#L573">573</a>
<a name=L574 href="source/dlls/gdi/dib.c?v=wine20040914#L574">574</a> case 32: <b><i>/* 32 bpp srcDIB -&gt; 16 bpp dstDIB */</i></b>
<a name=L575 href="source/dlls/gdi/dib.c?v=wine20040914#L575">575</a> {
<a name=L576 href="source/dlls/gdi/dib.c?v=wine20040914#L576">576</a> LPDWORD srcbits = (LPDWORD)sbits;
<a name=L577 href="source/dlls/gdi/dib.c?v=wine20040914#L577">577</a> DWORD val;
<a name=L578 href="source/dlls/gdi/dib.c?v=wine20040914#L578">578</a>
<a name=L579 href="source/dlls/gdi/dib.c?v=wine20040914#L579">579</a> <a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=min">min</a>(srcwidth, dstwidth);
<a name=L580 href="source/dlls/gdi/dib.c?v=wine20040914#L580">580</a> for( y = 0; y &lt; lines; y++) {
<a name=L581 href="source/dlls/gdi/dib.c?v=wine20040914#L581">581</a> for( x = 0; x &lt; <a href="ident?v=wine20040914;i=width">width</a>; x++ ) {
<a name=L582 href="source/dlls/gdi/dib.c?v=wine20040914#L582">582</a> val = *srcbits++;
<a name=L583 href="source/dlls/gdi/dib.c?v=wine20040914#L583">583</a> *dstbits++ = (<a href="ident?v=wine20040914;i=WORD">WORD</a>)(((val &gt;&gt; 3) &amp; bmask) | ((val &gt;&gt; 6) &amp; gmask) |
<a name=L584 href="source/dlls/gdi/dib.c?v=wine20040914#L584">584</a> ((val &gt;&gt; 9) &amp; rmask));
<a name=L585 href="source/dlls/gdi/dib.c?v=wine20040914#L585">585</a> }
<a name=L586 href="source/dlls/gdi/dib.c?v=wine20040914#L586">586</a> dstbits = (LPWORD)(dbits+=dstwidthb);
<a name=L587 href="source/dlls/gdi/dib.c?v=wine20040914#L587">587</a> srcbits = (LPDWORD)(sbits+=srcwidthb);
<a name=L588 href="source/dlls/gdi/dib.c?v=wine20040914#L588">588</a> }
<a name=L589 href="source/dlls/gdi/dib.c?v=wine20040914#L589">589</a> }
<a name=L590 href="source/dlls/gdi/dib.c?v=wine20040914#L590">590</a> break;
<a name=L591 href="source/dlls/gdi/dib.c?v=wine20040914#L591">591</a>
<a name=L592 href="source/dlls/gdi/dib.c?v=wine20040914#L592">592</a> default: <b><i>/* ? bit bmp -&gt; 16 bit DIB */</i></b>
<a name=L593 href="source/dlls/gdi/dib.c?v=wine20040914#L593">593</a> <a href="ident?v=wine20040914;i=FIXME">FIXME</a>(<i>"15/16 bit DIB %d bit bitmap\n"</i>,
<a name=L594 href="source/dlls/gdi/dib.c?v=wine20040914#L594">594</a> bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel);
<a name=L595 href="source/dlls/gdi/dib.c?v=wine20040914#L595">595</a> break;
<a name=L596 href="source/dlls/gdi/dib.c?v=wine20040914#L596">596</a> }
<a name=L597 href="source/dlls/gdi/dib.c?v=wine20040914#L597">597</a> }
<a name=L598 href="source/dlls/gdi/dib.c?v=wine20040914#L598">598</a> break;
<a name=L599 href="source/dlls/gdi/dib.c?v=wine20040914#L599">599</a>
<a name=L600 href="source/dlls/gdi/dib.c?v=wine20040914#L600">600</a> case 24: <b><i>/* 24 bpp dstDIB */</i></b>
<a name=L601 href="source/dlls/gdi/dib.c?v=wine20040914#L601">601</a> {
<a name=L602 href="source/dlls/gdi/dib.c?v=wine20040914#L602">602</a> LPBYTE dstbits = dbits;
<a name=L603 href="source/dlls/gdi/dib.c?v=wine20040914#L603">603</a>
<a name=L604 href="source/dlls/gdi/dib.c?v=wine20040914#L604">604</a> switch(bmp-&gt;dib-&gt;dsBm.bmBitsPixel) {
<a name=L605 href="source/dlls/gdi/dib.c?v=wine20040914#L605">605</a>
<a name=L606 href="source/dlls/gdi/dib.c?v=wine20040914#L606">606</a> case 16: <b><i>/* 16 bpp srcDIB -&gt; 24 bpp dstDIB */</i></b>
<a name=L607 href="source/dlls/gdi/dib.c?v=wine20040914#L607">607</a> {
<a name=L608 href="source/dlls/gdi/dib.c?v=wine20040914#L608">608</a> LPWORD srcbits = (LPWORD)sbits;
<a name=L609 href="source/dlls/gdi/dib.c?v=wine20040914#L609">609</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> val;
<a name=L610 href="source/dlls/gdi/dib.c?v=wine20040914#L610">610</a>
<a name=L611 href="source/dlls/gdi/dib.c?v=wine20040914#L611">611</a> <a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=min">min</a>(srcwidth, dstwidth);
<a name=L612 href="source/dlls/gdi/dib.c?v=wine20040914#L612">612</a> <b><i>/* FIXME: BI_BITFIELDS not supported yet */</i></b>
<a name=L613 href="source/dlls/gdi/dib.c?v=wine20040914#L613">613</a> for( y = 0; y &lt; lines; y++) {
<a name=L614 href="source/dlls/gdi/dib.c?v=wine20040914#L614">614</a> for( x = 0; x &lt; <a href="ident?v=wine20040914;i=width">width</a>; x++ ) {
<a name=L615 href="source/dlls/gdi/dib.c?v=wine20040914#L615">615</a> val = *srcbits++;
<a name=L616 href="source/dlls/gdi/dib.c?v=wine20040914#L616">616</a> *dstbits++ = (<a href="ident?v=wine20040914;i=BYTE">BYTE</a>)(((val &lt;&lt; 3) &amp; 0xf8) | ((val &gt;&gt; 2) &amp; 0x07));
<a name=L617 href="source/dlls/gdi/dib.c?v=wine20040914#L617">617</a> *dstbits++ = (<a href="ident?v=wine20040914;i=BYTE">BYTE</a>)(((val &gt;&gt; 2) &amp; 0xf8) | ((val &gt;&gt; 7) &amp; 0x07));
<a name=L618 href="source/dlls/gdi/dib.c?v=wine20040914#L618">618</a> *dstbits++ = (<a href="ident?v=wine20040914;i=BYTE">BYTE</a>)(((val &gt;&gt; 7) &amp; 0xf8) | ((val &gt;&gt; 12) &amp; 0x07));
<a name=L619 href="source/dlls/gdi/dib.c?v=wine20040914#L619">619</a> }
<a name=L620 href="source/dlls/gdi/dib.c?v=wine20040914#L620">620</a> dstbits = (LPBYTE)(dbits+=dstwidthb);
<a name=L621 href="source/dlls/gdi/dib.c?v=wine20040914#L621">621</a> srcbits = (LPWORD)(sbits+=srcwidthb);
<a name=L622 href="source/dlls/gdi/dib.c?v=wine20040914#L622">622</a> }
<a name=L623 href="source/dlls/gdi/dib.c?v=wine20040914#L623">623</a> }
<a name=L624 href="source/dlls/gdi/dib.c?v=wine20040914#L624">624</a> break;
<a name=L625 href="source/dlls/gdi/dib.c?v=wine20040914#L625">625</a>
<a name=L626 href="source/dlls/gdi/dib.c?v=wine20040914#L626">626</a> case 24: <b><i>/* 24 bpp srcDIB -&gt; 24 bpp dstDIB */</i></b>
<a name=L627 href="source/dlls/gdi/dib.c?v=wine20040914#L627">627</a> {
<a name=L628 href="source/dlls/gdi/dib.c?v=wine20040914#L628">628</a> widthb = <a href="ident?v=wine20040914;i=min">min</a>(srcwidthb, abs(dstwidthb));
<a name=L629 href="source/dlls/gdi/dib.c?v=wine20040914#L629">629</a> for (y = 0; y &lt; lines; y++, dbits+=dstwidthb, sbits+=srcwidthb)
<a name=L630 href="source/dlls/gdi/dib.c?v=wine20040914#L630">630</a> memcpy(dbits, sbits, widthb);
<a name=L631 href="source/dlls/gdi/dib.c?v=wine20040914#L631">631</a> }
<a name=L632 href="source/dlls/gdi/dib.c?v=wine20040914#L632">632</a> break;
<a name=L633 href="source/dlls/gdi/dib.c?v=wine20040914#L633">633</a>
<a name=L634 href="source/dlls/gdi/dib.c?v=wine20040914#L634">634</a> case 32: <b><i>/* 32 bpp srcDIB -&gt; 24 bpp dstDIB */</i></b>
<a name=L635 href="source/dlls/gdi/dib.c?v=wine20040914#L635">635</a> {
<a name=L636 href="source/dlls/gdi/dib.c?v=wine20040914#L636">636</a> LPBYTE srcbits = (LPBYTE)sbits;
<a name=L637 href="source/dlls/gdi/dib.c?v=wine20040914#L637">637</a>
<a name=L638 href="source/dlls/gdi/dib.c?v=wine20040914#L638">638</a> <a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=min">min</a>(srcwidth, dstwidth);
<a name=L639 href="source/dlls/gdi/dib.c?v=wine20040914#L639">639</a> for( y = 0; y &lt; lines; y++) {
<a name=L640 href="source/dlls/gdi/dib.c?v=wine20040914#L640">640</a> for( x = 0; x &lt; <a href="ident?v=wine20040914;i=width">width</a>; x++, srcbits++ ) {
<a name=L641 href="source/dlls/gdi/dib.c?v=wine20040914#L641">641</a> *dstbits++ = *srcbits++;
<a name=L642 href="source/dlls/gdi/dib.c?v=wine20040914#L642">642</a> *dstbits++ = *srcbits++;
<a name=L643 href="source/dlls/gdi/dib.c?v=wine20040914#L643">643</a> *dstbits++ = *srcbits++;
<a name=L644 href="source/dlls/gdi/dib.c?v=wine20040914#L644">644</a> }
<a name=L645 href="source/dlls/gdi/dib.c?v=wine20040914#L645">645</a> dstbits=(LPBYTE)(dbits+=dstwidthb);
<a name=L646 href="source/dlls/gdi/dib.c?v=wine20040914#L646">646</a> srcbits = (LPBYTE)(sbits+=srcwidthb);
<a name=L647 href="source/dlls/gdi/dib.c?v=wine20040914#L647">647</a> }
<a name=L648 href="source/dlls/gdi/dib.c?v=wine20040914#L648">648</a> }
<a name=L649 href="source/dlls/gdi/dib.c?v=wine20040914#L649">649</a> break;
<a name=L650 href="source/dlls/gdi/dib.c?v=wine20040914#L650">650</a>
<a name=L651 href="source/dlls/gdi/dib.c?v=wine20040914#L651">651</a> default: <b><i>/* ? bit bmp -&gt; 24 bit DIB */</i></b>
<a name=L652 href="source/dlls/gdi/dib.c?v=wine20040914#L652">652</a> <a href="ident?v=wine20040914;i=FIXME">FIXME</a>(<i>"24 bit DIB %d bit bitmap\n"</i>,
<a name=L653 href="source/dlls/gdi/dib.c?v=wine20040914#L653">653</a> bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel);
<a name=L654 href="source/dlls/gdi/dib.c?v=wine20040914#L654">654</a> break;
<a name=L655 href="source/dlls/gdi/dib.c?v=wine20040914#L655">655</a> }
<a name=L656 href="source/dlls/gdi/dib.c?v=wine20040914#L656">656</a> }
<a name=L657 href="source/dlls/gdi/dib.c?v=wine20040914#L657">657</a> break;
<a name=L658 href="source/dlls/gdi/dib.c?v=wine20040914#L658">658</a>
<a name=L659 href="source/dlls/gdi/dib.c?v=wine20040914#L659">659</a> case 32: <b><i>/* 32 bpp dstDIB */</i></b>
<a name=L660 href="source/dlls/gdi/dib.c?v=wine20040914#L660">660</a> {
<a name=L661 href="source/dlls/gdi/dib.c?v=wine20040914#L661">661</a> LPDWORD dstbits = (LPDWORD)dbits;
<a name=L662 href="source/dlls/gdi/dib.c?v=wine20040914#L662">662</a>
<a name=L663 href="source/dlls/gdi/dib.c?v=wine20040914#L663">663</a> <b><i>/* FIXME: BI_BITFIELDS not supported yet */</i></b>
<a name=L664 href="source/dlls/gdi/dib.c?v=wine20040914#L664">664</a>
<a name=L665 href="source/dlls/gdi/dib.c?v=wine20040914#L665">665</a> switch(bmp-&gt;dib-&gt;dsBm.bmBitsPixel) {
<a name=L666 href="source/dlls/gdi/dib.c?v=wine20040914#L666">666</a> case 16: <b><i>/* 16 bpp srcDIB -&gt; 32 bpp dstDIB */</i></b>
<a name=L667 href="source/dlls/gdi/dib.c?v=wine20040914#L667">667</a> {
<a name=L668 href="source/dlls/gdi/dib.c?v=wine20040914#L668">668</a> LPWORD srcbits = (LPWORD)sbits;
<a name=L669 href="source/dlls/gdi/dib.c?v=wine20040914#L669">669</a> DWORD val;
<a name=L670 href="source/dlls/gdi/dib.c?v=wine20040914#L670">670</a>
<a name=L671 href="source/dlls/gdi/dib.c?v=wine20040914#L671">671</a> <a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=min">min</a>(srcwidth, dstwidth);
<a name=L672 href="source/dlls/gdi/dib.c?v=wine20040914#L672">672</a> <b><i>/* FIXME: BI_BITFIELDS not supported yet */</i></b>
<a name=L673 href="source/dlls/gdi/dib.c?v=wine20040914#L673">673</a> for( y = 0; y &lt; lines; y++) {
<a name=L674 href="source/dlls/gdi/dib.c?v=wine20040914#L674">674</a> for( x = 0; x &lt; <a href="ident?v=wine20040914;i=width">width</a>; x++ ) {
<a name=L675 href="source/dlls/gdi/dib.c?v=wine20040914#L675">675</a> val = (DWORD)*srcbits++;
<a name=L676 href="source/dlls/gdi/dib.c?v=wine20040914#L676">676</a> *dstbits++ = ((val &lt;&lt; 3) &amp; 0xf8) | ((val &gt;&gt; 2) &amp; 0x07) |
<a name=L677 href="source/dlls/gdi/dib.c?v=wine20040914#L677">677</a> ((val &lt;&lt; 6) &amp; 0xf800) | ((val &lt;&lt; 1) &amp; 0x0700) |
<a name=L678 href="source/dlls/gdi/dib.c?v=wine20040914#L678">678</a> ((val &lt;&lt; 9) &amp; 0xf80000) | ((val &lt;&lt; 4) &amp; 0x070000);
<a name=L679 href="source/dlls/gdi/dib.c?v=wine20040914#L679">679</a> }
<a name=L680 href="source/dlls/gdi/dib.c?v=wine20040914#L680">680</a> dstbits=(LPDWORD)(dbits+=dstwidthb);
<a name=L681 href="source/dlls/gdi/dib.c?v=wine20040914#L681">681</a> srcbits=(LPWORD)(sbits+=srcwidthb);
<a name=L682 href="source/dlls/gdi/dib.c?v=wine20040914#L682">682</a> }
<a name=L683 href="source/dlls/gdi/dib.c?v=wine20040914#L683">683</a> }
<a name=L684 href="source/dlls/gdi/dib.c?v=wine20040914#L684">684</a> break;
<a name=L685 href="source/dlls/gdi/dib.c?v=wine20040914#L685">685</a>
<a name=L686 href="source/dlls/gdi/dib.c?v=wine20040914#L686">686</a> case 24: <b><i>/* 24 bpp srcDIB -&gt; 32 bpp dstDIB */</i></b>
<a name=L687 href="source/dlls/gdi/dib.c?v=wine20040914#L687">687</a> {
<a name=L688 href="source/dlls/gdi/dib.c?v=wine20040914#L688">688</a> LPBYTE srcbits = sbits;
<a name=L689 href="source/dlls/gdi/dib.c?v=wine20040914#L689">689</a>
<a name=L690 href="source/dlls/gdi/dib.c?v=wine20040914#L690">690</a> <a href="ident?v=wine20040914;i=width">width</a> = <a href="ident?v=wine20040914;i=min">min</a>(srcwidth, dstwidth);
<a name=L691 href="source/dlls/gdi/dib.c?v=wine20040914#L691">691</a> for( y = 0; y &lt; lines; y++) {
<a name=L692 href="source/dlls/gdi/dib.c?v=wine20040914#L692">692</a> for( x = 0; x &lt; <a href="ident?v=wine20040914;i=width">width</a>; x++, srcbits+=3 )
<a name=L693 href="source/dlls/gdi/dib.c?v=wine20040914#L693">693</a> *dstbits++ = ((DWORD)*srcbits) &amp; 0x00ffffff;
<a name=L694 href="source/dlls/gdi/dib.c?v=wine20040914#L694">694</a> dstbits=(LPDWORD)(dbits+=dstwidthb);
<a name=L695 href="source/dlls/gdi/dib.c?v=wine20040914#L695">695</a> srcbits=(sbits+=srcwidthb);
<a name=L696 href="source/dlls/gdi/dib.c?v=wine20040914#L696">696</a> }
<a name=L697 href="source/dlls/gdi/dib.c?v=wine20040914#L697">697</a> }
<a name=L698 href="source/dlls/gdi/dib.c?v=wine20040914#L698">698</a> break;
<a name=L699 href="source/dlls/gdi/dib.c?v=wine20040914#L699">699</a>
<a name=L700 href="source/dlls/gdi/dib.c?v=wine20040914#L700">700</a> case 32: <b><i>/* 32 bpp srcDIB -&gt; 32 bpp dstDIB */</i></b>
<a name=L701 href="source/dlls/gdi/dib.c?v=wine20040914#L701">701</a> {
<a name=L702 href="source/dlls/gdi/dib.c?v=wine20040914#L702">702</a> widthb = <a href="ident?v=wine20040914;i=min">min</a>(srcwidthb, abs(dstwidthb));
<a name=L703 href="source/dlls/gdi/dib.c?v=wine20040914#L703">703</a> <b><i>/* FIXME: BI_BITFIELDS not supported yet */</i></b>
<a name=L704 href="source/dlls/gdi/dib.c?v=wine20040914#L704">704</a> for (y = 0; y &lt; lines; y++, dbits+=dstwidthb, sbits+=srcwidthb) {
<a name=L705 href="source/dlls/gdi/dib.c?v=wine20040914#L705">705</a> memcpy(dbits, sbits, widthb);
<a name=L706 href="source/dlls/gdi/dib.c?v=wine20040914#L706">706</a> }
<a name=L707 href="source/dlls/gdi/dib.c?v=wine20040914#L707">707</a> }
<a name=L708 href="source/dlls/gdi/dib.c?v=wine20040914#L708">708</a> break;
<a name=L709 href="source/dlls/gdi/dib.c?v=wine20040914#L709">709</a>
<a name=L710 href="source/dlls/gdi/dib.c?v=wine20040914#L710">710</a> default: <b><i>/* ? bit bmp -&gt; 32 bit DIB */</i></b>
<a name=L711 href="source/dlls/gdi/dib.c?v=wine20040914#L711">711</a> <a href="ident?v=wine20040914;i=FIXME">FIXME</a>(<i>"32 bit DIB %d bit bitmap\n"</i>,
<a name=L712 href="source/dlls/gdi/dib.c?v=wine20040914#L712">712</a> bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel);
<a name=L713 href="source/dlls/gdi/dib.c?v=wine20040914#L713">713</a> break;
<a name=L714 href="source/dlls/gdi/dib.c?v=wine20040914#L714">714</a> }
<a name=L715 href="source/dlls/gdi/dib.c?v=wine20040914#L715">715</a> }
<a name=L716 href="source/dlls/gdi/dib.c?v=wine20040914#L716">716</a> break;
<a name=L717 href="source/dlls/gdi/dib.c?v=wine20040914#L717">717</a>
<a name=L718 href="source/dlls/gdi/dib.c?v=wine20040914#L718">718</a> default: <b><i>/* ? bit DIB */</i></b>
<a name=L719 href="source/dlls/gdi/dib.c?v=wine20040914#L719">719</a> <a href="ident?v=wine20040914;i=FIXME">FIXME</a>(<i>"Unsupported DIB depth %d\n"</i>, <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount);
<a name=L720 href="source/dlls/gdi/dib.c?v=wine20040914#L720">720</a> break;
<a name=L721 href="source/dlls/gdi/dib.c?v=wine20040914#L721">721</a> }
<a name=L722 href="source/dlls/gdi/dib.c?v=wine20040914#L722">722</a> }
<a name=L723 href="source/dlls/gdi/dib.c?v=wine20040914#L723">723</a> <b><i>/* Otherwise, get bits from the XImage */</i></b>
<a name=L724 href="source/dlls/gdi/dib.c?v=wine20040914#L724">724</a> else
<a name=L725 href="source/dlls/gdi/dib.c?v=wine20040914#L725">725</a> {
<a name=L726 href="source/dlls/gdi/dib.c?v=wine20040914#L726">726</a> if (!bmp-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a> &amp;&amp; !<a href="ident?v=wine20040914;i=BITMAP_SetOwnerDC">BITMAP_SetOwnerDC</a>( hbitmap, dc )) lines = 0;
<a name=L727 href="source/dlls/gdi/dib.c?v=wine20040914#L727">727</a> else
<a name=L728 href="source/dlls/gdi/dib.c?v=wine20040914#L728">728</a> {
<a name=L729 href="source/dlls/gdi/dib.c?v=wine20040914#L729">729</a> if (bmp-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a> &amp;&amp; bmp-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pGetDIBits)
<a name=L730 href="source/dlls/gdi/dib.c?v=wine20040914#L730">730</a> lines = bmp-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pGetDIBits( dc-&gt;physDev, hbitmap, startscan,
<a name=L731 href="source/dlls/gdi/dib.c?v=wine20040914#L731">731</a> lines, bits, <a href="ident?v=wine20040914;i=info">info</a>, coloruse );
<a name=L732 href="source/dlls/gdi/dib.c?v=wine20040914#L732">732</a> else
<a name=L733 href="source/dlls/gdi/dib.c?v=wine20040914#L733">733</a> lines = 0; <b><i>/* FIXME: should copy from bmp-&gt;bitmap.bmBits */</i></b>
<a name=L734 href="source/dlls/gdi/dib.c?v=wine20040914#L734">734</a> }
<a name=L735 href="source/dlls/gdi/dib.c?v=wine20040914#L735">735</a> }
<a name=L736 href="source/dlls/gdi/dib.c?v=wine20040914#L736">736</a> }
<a name=L737 href="source/dlls/gdi/dib.c?v=wine20040914#L737">737</a> else if( <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biSize &gt;= sizeof(BITMAPINFOHEADER) )
<a name=L738 href="source/dlls/gdi/dib.c?v=wine20040914#L738">738</a> {
<a name=L739 href="source/dlls/gdi/dib.c?v=wine20040914#L739">739</a> <b><i>/* fill in struct members */</i></b>
<a name=L740 href="source/dlls/gdi/dib.c?v=wine20040914#L740">740</a>
<a name=L741 href="source/dlls/gdi/dib.c?v=wine20040914#L741">741</a> if( <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount == 0)
<a name=L742 href="source/dlls/gdi/dib.c?v=wine20040914#L742">742</a> {
<a name=L743 href="source/dlls/gdi/dib.c?v=wine20040914#L743">743</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biWidth = bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmWidth;
<a name=L744 href="source/dlls/gdi/dib.c?v=wine20040914#L744">744</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight = bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmHeight;
<a name=L745 href="source/dlls/gdi/dib.c?v=wine20040914#L745">745</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biPlanes = 1;
<a name=L746 href="source/dlls/gdi/dib.c?v=wine20040914#L746">746</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount = bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel;
<a name=L747 href="source/dlls/gdi/dib.c?v=wine20040914#L747">747</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biSizeImage =
<a name=L748 href="source/dlls/gdi/dib.c?v=wine20040914#L748">748</a> <a href="ident?v=wine20040914;i=DIB_GetDIBImageBytes">DIB_GetDIBImageBytes</a>( bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmWidth,
<a name=L749 href="source/dlls/gdi/dib.c?v=wine20040914#L749">749</a> bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmHeight,
<a name=L750 href="source/dlls/gdi/dib.c?v=wine20040914#L750">750</a> bmp-&gt;<a href="ident?v=wine20040914;i=bitmap">bitmap</a>.bmBitsPixel );
<a name=L751 href="source/dlls/gdi/dib.c?v=wine20040914#L751">751</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biCompression = 0;
<a name=L752 href="source/dlls/gdi/dib.c?v=wine20040914#L752">752</a> }
<a name=L753 href="source/dlls/gdi/dib.c?v=wine20040914#L753">753</a> else
<a name=L754 href="source/dlls/gdi/dib.c?v=wine20040914#L754">754</a> {
<a name=L755 href="source/dlls/gdi/dib.c?v=wine20040914#L755">755</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biSizeImage = <a href="ident?v=wine20040914;i=DIB_GetDIBImageBytes">DIB_GetDIBImageBytes</a>(
<a name=L756 href="source/dlls/gdi/dib.c?v=wine20040914#L756">756</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biWidth,
<a name=L757 href="source/dlls/gdi/dib.c?v=wine20040914#L757">757</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight,
<a name=L758 href="source/dlls/gdi/dib.c?v=wine20040914#L758">758</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biBitCount );
<a name=L759 href="source/dlls/gdi/dib.c?v=wine20040914#L759">759</a> }
<a name=L760 href="source/dlls/gdi/dib.c?v=wine20040914#L760">760</a> lines = <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight;
<a name=L761 href="source/dlls/gdi/dib.c?v=wine20040914#L761">761</a> }
<a name=L762 href="source/dlls/gdi/dib.c?v=wine20040914#L762">762</a>
<a name=L763 href="source/dlls/gdi/dib.c?v=wine20040914#L763">763</a> <a href="ident?v=wine20040914;i=TRACE">TRACE</a>(<i>"biSizeImage = %ld, biWidth = %ld, biHeight = %ld\n"</i>,
<a name=L764 href="source/dlls/gdi/dib.c?v=wine20040914#L764">764</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biSizeImage, <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biWidth,
<a name=L765 href="source/dlls/gdi/dib.c?v=wine20040914#L765">765</a> <a href="ident?v=wine20040914;i=info">info</a>-&gt;bmiHeader.biHeight);
<a name=L766 href="source/dlls/gdi/dib.c?v=wine20040914#L766">766</a>
<a name=L767 href="source/dlls/gdi/dib.c?v=wine20040914#L767">767</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L768 href="source/dlls/gdi/dib.c?v=wine20040914#L768">768</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hbitmap );
<a name=L769 href="source/dlls/gdi/dib.c?v=wine20040914#L769">769</a> <a href="ident?v=wine20040914;i=DeleteDC">DeleteDC</a>(memdc);
<a name=L770 href="source/dlls/gdi/dib.c?v=wine20040914#L770">770</a> return lines;
<a name=L771 href="source/dlls/gdi/dib.c?v=wine20040914#L771">771</a> }
<a name=L772 href="source/dlls/gdi/dib.c?v=wine20040914#L772">772</a>
<a name=L773 href="source/dlls/gdi/dib.c?v=wine20040914#L773">773</a>
<a name=L774 href="source/dlls/gdi/dib.c?v=wine20040914#L774">774</a> <b><i>/***********************************************************************</i></b>
<a name=L775 href="source/dlls/gdi/dib.c?v=wine20040914#L775">775</a> <b><i> * CreateDIBitmap (GDI32.@)</i></b>
<a name=L776 href="source/dlls/gdi/dib.c?v=wine20040914#L776">776</a> <b><i> *</i></b>
<a name=L777 href="source/dlls/gdi/dib.c?v=wine20040914#L777">777</a> <b><i> * Creates a DDB (device dependent bitmap) from a DIB.</i></b>
<a name=L778 href="source/dlls/gdi/dib.c?v=wine20040914#L778">778</a> <b><i> * The DDB will have the same color depth as the reference DC.</i></b>
<a name=L779 href="source/dlls/gdi/dib.c?v=wine20040914#L779">779</a> <b><i> */</i></b>
<a name=L780 href="source/dlls/gdi/dib.c?v=wine20040914#L780">780</a> HBITMAP <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=CreateDIBitmap">CreateDIBitmap</a>( HDC hdc, const BITMAPINFOHEADER *<a href="ident?v=wine20040914;i=header">header</a>,
<a name=L781 href="source/dlls/gdi/dib.c?v=wine20040914#L781">781</a> DWORD <a href="ident?v=wine20040914;i=init">init</a>, LPCVOID bits, const BITMAPINFO *<a href="ident?v=wine20040914;i=data">data</a>,
<a name=L782 href="source/dlls/gdi/dib.c?v=wine20040914#L782">782</a> UINT coloruse )
<a name=L783 href="source/dlls/gdi/dib.c?v=wine20040914#L783">783</a> {
<a name=L784 href="source/dlls/gdi/dib.c?v=wine20040914#L784">784</a> HBITMAP handle;
<a name=L785 href="source/dlls/gdi/dib.c?v=wine20040914#L785">785</a> DWORD <a href="ident?v=wine20040914;i=width">width</a>;
<a name=L786 href="source/dlls/gdi/dib.c?v=wine20040914#L786">786</a> int height;
<a name=L787 href="source/dlls/gdi/dib.c?v=wine20040914#L787">787</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> bpp;
<a name=L788 href="source/dlls/gdi/dib.c?v=wine20040914#L788">788</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> compr;
<a name=L789 href="source/dlls/gdi/dib.c?v=wine20040914#L789">789</a> <a href="ident?v=wine20040914;i=DC">DC</a> *dc;
<a name=L790 href="source/dlls/gdi/dib.c?v=wine20040914#L790">790</a>
<a name=L791 href="source/dlls/gdi/dib.c?v=wine20040914#L791">791</a> if (<a href="ident?v=wine20040914;i=DIB_GetBitmapInfo">DIB_GetBitmapInfo</a>( <a href="ident?v=wine20040914;i=header">header</a>, &amp;<a href="ident?v=wine20040914;i=width">width</a>, &amp;height, &amp;bpp, &amp;compr ) == -1) return 0;
<a name=L792 href="source/dlls/gdi/dib.c?v=wine20040914#L792">792</a> if (height &lt; 0) height = -height;
<a name=L793 href="source/dlls/gdi/dib.c?v=wine20040914#L793">793</a>
<a name=L794 href="source/dlls/gdi/dib.c?v=wine20040914#L794">794</a> if (hdc == <a href="ident?v=wine20040914;i=NULL">NULL</a>)
<a name=L795 href="source/dlls/gdi/dib.c?v=wine20040914#L795">795</a> handle = <a href="ident?v=wine20040914;i=CreateBitmap">CreateBitmap</a>( <a href="ident?v=wine20040914;i=width">width</a>, height, 1, 1, <a href="ident?v=wine20040914;i=NULL">NULL</a> );
<a name=L796 href="source/dlls/gdi/dib.c?v=wine20040914#L796">796</a> else
<a name=L797 href="source/dlls/gdi/dib.c?v=wine20040914#L797">797</a> handle = <a href="ident?v=wine20040914;i=CreateCompatibleBitmap">CreateCompatibleBitmap</a>( hdc, <a href="ident?v=wine20040914;i=width">width</a>, height );
<a name=L798 href="source/dlls/gdi/dib.c?v=wine20040914#L798">798</a>
<a name=L799 href="source/dlls/gdi/dib.c?v=wine20040914#L799">799</a> if (handle)
<a name=L800 href="source/dlls/gdi/dib.c?v=wine20040914#L800">800</a> {
<a name=L801 href="source/dlls/gdi/dib.c?v=wine20040914#L801">801</a> if (<a href="ident?v=wine20040914;i=init">init</a> == <a href="ident?v=wine20040914;i=CBM_INIT">CBM_INIT</a>) <a href="ident?v=wine20040914;i=SetDIBits">SetDIBits</a>( hdc, handle, 0, height, bits, <a href="ident?v=wine20040914;i=data">data</a>, coloruse );
<a name=L802 href="source/dlls/gdi/dib.c?v=wine20040914#L802">802</a>
<a name=L803 href="source/dlls/gdi/dib.c?v=wine20040914#L803">803</a> else if (hdc &amp;&amp; ((dc = <a href="ident?v=wine20040914;i=DC_GetDCPtr">DC_GetDCPtr</a>( hdc )) != <a href="ident?v=wine20040914;i=NULL">NULL</a>) )
<a name=L804 href="source/dlls/gdi/dib.c?v=wine20040914#L804">804</a> {
<a name=L805 href="source/dlls/gdi/dib.c?v=wine20040914#L805">805</a> if (!<a href="ident?v=wine20040914;i=BITMAP_SetOwnerDC">BITMAP_SetOwnerDC</a>( handle, dc ))
<a name=L806 href="source/dlls/gdi/dib.c?v=wine20040914#L806">806</a> {
<a name=L807 href="source/dlls/gdi/dib.c?v=wine20040914#L807">807</a> <a href="ident?v=wine20040914;i=DeleteObject">DeleteObject</a>( handle );
<a name=L808 href="source/dlls/gdi/dib.c?v=wine20040914#L808">808</a> handle = 0;
<a name=L809 href="source/dlls/gdi/dib.c?v=wine20040914#L809">809</a> }
<a name=L810 href="source/dlls/gdi/dib.c?v=wine20040914#L810">810</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hdc );
<a name=L811 href="source/dlls/gdi/dib.c?v=wine20040914#L811">811</a> }
<a name=L812 href="source/dlls/gdi/dib.c?v=wine20040914#L812">812</a> }
<a name=L813 href="source/dlls/gdi/dib.c?v=wine20040914#L813">813</a>
<a name=L814 href="source/dlls/gdi/dib.c?v=wine20040914#L814">814</a> return handle;
<a name=L815 href="source/dlls/gdi/dib.c?v=wine20040914#L815">815</a> }
<a name=L816 href="source/dlls/gdi/dib.c?v=wine20040914#L816">816</a>
<a name=L817 href="source/dlls/gdi/dib.c?v=wine20040914#L817">817</a> <b><i>/***********************************************************************</i></b>
<a name=L818 href="source/dlls/gdi/dib.c?v=wine20040914#L818">818</a> <b><i> * CreateDIBSection (GDI.489)</i></b>
<a name=L819 href="source/dlls/gdi/dib.c?v=wine20040914#L819">819</a> <b><i> */</i></b>
<a name=L820 href="source/dlls/gdi/dib.c?v=wine20040914#L820">820</a> HBITMAP16 <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=CreateDIBSection16">CreateDIBSection16</a> (HDC16 hdc, const BITMAPINFO *bmi, <a href="ident?v=wine20040914;i=UINT16">UINT16</a> <a href="ident?v=wine20040914;i=usage">usage</a>,
<a name=L821 href="source/dlls/gdi/dib.c?v=wine20040914#L821">821</a> <a href="ident?v=wine20040914;i=SEGPTR">SEGPTR</a> *bits16, <a href="ident?v=wine20040914;i=HANDLE">HANDLE</a> <a href="ident?v=wine20040914;i=section">section</a>, DWORD offset)
<a name=L822 href="source/dlls/gdi/dib.c?v=wine20040914#L822">822</a> {
<a name=L823 href="source/dlls/gdi/dib.c?v=wine20040914#L823">823</a> LPVOID bits32;
<a name=L824 href="source/dlls/gdi/dib.c?v=wine20040914#L824">824</a> HBITMAP hbitmap;
<a name=L825 href="source/dlls/gdi/dib.c?v=wine20040914#L825">825</a>
<a name=L826 href="source/dlls/gdi/dib.c?v=wine20040914#L826">826</a> hbitmap = <a href="ident?v=wine20040914;i=CreateDIBSection">CreateDIBSection</a>( <a href="ident?v=wine20040914;i=HDC_32">HDC_32</a>(hdc), bmi, <a href="ident?v=wine20040914;i=usage">usage</a>, &amp;bits32, <a href="ident?v=wine20040914;i=section">section</a>, offset );
<a name=L827 href="source/dlls/gdi/dib.c?v=wine20040914#L827">827</a> if (hbitmap)
<a name=L828 href="source/dlls/gdi/dib.c?v=wine20040914#L828">828</a> {
<a name=L829 href="source/dlls/gdi/dib.c?v=wine20040914#L829">829</a> <a href="ident?v=wine20040914;i=BITMAPOBJ">BITMAPOBJ</a> *bmp = (<a href="ident?v=wine20040914;i=BITMAPOBJ">BITMAPOBJ</a> *) <a href="ident?v=wine20040914;i=GDI_GetObjPtr">GDI_GetObjPtr</a>(hbitmap, <a href="ident?v=wine20040914;i=BITMAP_MAGIC">BITMAP_MAGIC</a>);
<a name=L830 href="source/dlls/gdi/dib.c?v=wine20040914#L830">830</a> if (bmp &amp;&amp; bmp-&gt;dib &amp;&amp; bits32)
<a name=L831 href="source/dlls/gdi/dib.c?v=wine20040914#L831">831</a> {
<a name=L832 href="source/dlls/gdi/dib.c?v=wine20040914#L832">832</a> const BITMAPINFOHEADER *bi = &amp;bmi-&gt;bmiHeader;
<a name=L833 href="source/dlls/gdi/dib.c?v=wine20040914#L833">833</a> <a href="ident?v=wine20040914;i=INT">INT</a> height = bi-&gt;biHeight &gt;= 0 ? bi-&gt;biHeight : -bi-&gt;biHeight;
<a name=L834 href="source/dlls/gdi/dib.c?v=wine20040914#L834">834</a> <a href="ident?v=wine20040914;i=INT">INT</a> width_bytes = <a href="ident?v=wine20040914;i=DIB_GetDIBWidthBytes">DIB_GetDIBWidthBytes</a>(bi-&gt;biWidth, bi-&gt;biBitCount);
<a name=L835 href="source/dlls/gdi/dib.c?v=wine20040914#L835">835</a> <a href="ident?v=wine20040914;i=INT">INT</a> <a href="ident?v=wine20040914;i=size">size</a> = (bi-&gt;biSizeImage &amp;&amp; bi-&gt;biCompression != <a href="ident?v=wine20040914;i=BI_RGB">BI_RGB</a>) ?
<a name=L836 href="source/dlls/gdi/dib.c?v=wine20040914#L836">836</a> bi-&gt;biSizeImage : width_bytes * height;
<a name=L837 href="source/dlls/gdi/dib.c?v=wine20040914#L837">837</a>
<a name=L838 href="source/dlls/gdi/dib.c?v=wine20040914#L838">838</a> <b><i>/* calculate number of sel's needed for size with 64K steps */</i></b>
<a name=L839 href="source/dlls/gdi/dib.c?v=wine20040914#L839">839</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> count = (<a href="ident?v=wine20040914;i=size">size</a> + 0xffff) / 0x10000;
<a name=L840 href="source/dlls/gdi/dib.c?v=wine20040914#L840">840</a> <a href="ident?v=wine20040914;i=WORD">WORD</a> sel = <a href="ident?v=wine20040914;i=AllocSelectorArray16">AllocSelectorArray16</a>(count);
<a name=L841 href="source/dlls/gdi/dib.c?v=wine20040914#L841">841</a> int <a href="ident?v=wine20040914;i=i">i</a>;
<a name=L842 href="source/dlls/gdi/dib.c?v=wine20040914#L842">842</a>
<a name=L843 href="source/dlls/gdi/dib.c?v=wine20040914#L843">843</a> for (<a href="ident?v=wine20040914;i=i">i</a> = 0; <a href="ident?v=wine20040914;i=i">i</a> &lt; count; <a href="ident?v=wine20040914;i=i">i</a>++)
<a name=L844 href="source/dlls/gdi/dib.c?v=wine20040914#L844">844</a> {
<a name=L845 href="source/dlls/gdi/dib.c?v=wine20040914#L845">845</a> <a href="ident?v=wine20040914;i=SetSelectorBase">SetSelectorBase</a>(sel + (<a href="ident?v=wine20040914;i=i">i</a> &lt;&lt; <a href="ident?v=wine20040914;i=__AHSHIFT">__AHSHIFT</a>), (DWORD)bits32 + <a href="ident?v=wine20040914;i=i">i</a> * 0x10000);
<a name=L846 href="source/dlls/gdi/dib.c?v=wine20040914#L846">846</a> <a href="ident?v=wine20040914;i=SetSelectorLimit16">SetSelectorLimit16</a>(sel + (<a href="ident?v=wine20040914;i=i">i</a> &lt;&lt; <a href="ident?v=wine20040914;i=__AHSHIFT">__AHSHIFT</a>), <a href="ident?v=wine20040914;i=size">size</a> - 1); <b><i>/* yep, limit is correct */</i></b>
<a name=L847 href="source/dlls/gdi/dib.c?v=wine20040914#L847">847</a> <a href="ident?v=wine20040914;i=size">size</a> -= 0x10000;
<a name=L848 href="source/dlls/gdi/dib.c?v=wine20040914#L848">848</a> }
<a name=L849 href="source/dlls/gdi/dib.c?v=wine20040914#L849">849</a> bmp-&gt;segptr_bits = <a href="ident?v=wine20040914;i=MAKESEGPTR">MAKESEGPTR</a>( sel, 0 );
<a name=L850 href="source/dlls/gdi/dib.c?v=wine20040914#L850">850</a> if (bits16) *bits16 = bmp-&gt;segptr_bits;
<a name=L851 href="source/dlls/gdi/dib.c?v=wine20040914#L851">851</a> }
<a name=L852 href="source/dlls/gdi/dib.c?v=wine20040914#L852">852</a> if (bmp) <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>( hbitmap );
<a name=L853 href="source/dlls/gdi/dib.c?v=wine20040914#L853">853</a> }
<a name=L854 href="source/dlls/gdi/dib.c?v=wine20040914#L854">854</a> return <a href="ident?v=wine20040914;i=HBITMAP_16">HBITMAP_16</a>(hbitmap);
<a name=L855 href="source/dlls/gdi/dib.c?v=wine20040914#L855">855</a> }
<a name=L856 href="source/dlls/gdi/dib.c?v=wine20040914#L856">856</a>
<a name=L857 href="source/dlls/gdi/dib.c?v=wine20040914#L857">857</a> <b><i>/***********************************************************************</i></b>
<a name=L858 href="source/dlls/gdi/dib.c?v=wine20040914#L858">858</a> <b><i> * DIB_CreateDIBSection</i></b>
<a name=L859 href="source/dlls/gdi/dib.c?v=wine20040914#L859">859</a> <b><i> */</i></b>
<a name=L860 href="source/dlls/gdi/dib.c?v=wine20040914#L860">860</a> HBITMAP <a href="ident?v=wine20040914;i=DIB_CreateDIBSection">DIB_CreateDIBSection</a>(HDC hdc, const BITMAPINFO *bmi, UINT <a href="ident?v=wine20040914;i=usage">usage</a>,
<a name=L861 href="source/dlls/gdi/dib.c?v=wine20040914#L861">861</a> <a href="ident?v=wine20040914;i=VOID">VOID</a> **bits, <a href="ident?v=wine20040914;i=HANDLE">HANDLE</a> <a href="ident?v=wine20040914;i=section">section</a>,
<a name=L862 href="source/dlls/gdi/dib.c?v=wine20040914#L862">862</a> DWORD offset, DWORD ovr_pitch)
<a name=L863 href="source/dlls/gdi/dib.c?v=wine20040914#L863">863</a> {
<a name=L864 href="source/dlls/gdi/dib.c?v=wine20040914#L864">864</a> HBITMAP hbitmap = 0;
<a name=L865 href="source/dlls/gdi/dib.c?v=wine20040914#L865">865</a> <a href="ident?v=wine20040914;i=DC">DC</a> *dc;
<a name=L866 href="source/dlls/gdi/dib.c?v=wine20040914#L866">866</a> <a href="ident?v=wine20040914;i=BOOL">BOOL</a> bDesktopDC = <a href="ident?v=wine20040914;i=FALSE">FALSE</a>;
<a name=L867 href="source/dlls/gdi/dib.c?v=wine20040914#L867">867</a>
<a name=L868 href="source/dlls/gdi/dib.c?v=wine20040914#L868">868</a> <b><i>/* If the reference hdc is null, take the desktop dc */</i></b>
<a name=L869 href="source/dlls/gdi/dib.c?v=wine20040914#L869">869</a> if (hdc == 0)
<a name=L870 href="source/dlls/gdi/dib.c?v=wine20040914#L870">870</a> {
<a name=L871 href="source/dlls/gdi/dib.c?v=wine20040914#L871">871</a> hdc = <a href="ident?v=wine20040914;i=CreateCompatibleDC">CreateCompatibleDC</a>(0);
<a name=L872 href="source/dlls/gdi/dib.c?v=wine20040914#L872">872</a> bDesktopDC = <a href="ident?v=wine20040914;i=TRUE">TRUE</a>;
<a name=L873 href="source/dlls/gdi/dib.c?v=wine20040914#L873">873</a> }
<a name=L874 href="source/dlls/gdi/dib.c?v=wine20040914#L874">874</a>
<a name=L875 href="source/dlls/gdi/dib.c?v=wine20040914#L875">875</a> if ((dc = <a href="ident?v=wine20040914;i=DC_GetDCPtr">DC_GetDCPtr</a>( hdc )))
<a name=L876 href="source/dlls/gdi/dib.c?v=wine20040914#L876">876</a> {
<a name=L877 href="source/dlls/gdi/dib.c?v=wine20040914#L877">877</a> if(dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pCreateDIBSection)
<a name=L878 href="source/dlls/gdi/dib.c?v=wine20040914#L878">878</a> hbitmap = dc-&gt;<a href="ident?v=wine20040914;i=funcs">funcs</a>-&gt;pCreateDIBSection(dc-&gt;physDev, bmi, <a href="ident?v=wine20040914;i=usage">usage</a>, bits, <a href="ident?v=wine20040914;i=section">section</a>, offset, ovr_pitch);
<a name=L879 href="source/dlls/gdi/dib.c?v=wine20040914#L879">879</a> <a href="ident?v=wine20040914;i=GDI_ReleaseObj">GDI_ReleaseObj</a>(hdc);
<a name=L880 href="source/dlls/gdi/dib.c?v=wine20040914#L880">880</a> }
<a name=L881 href="source/dlls/gdi/dib.c?v=wine20040914#L881">881</a>
<a name=L882 href="source/dlls/gdi/dib.c?v=wine20040914#L882">882</a> if (bDesktopDC)
<a name=L883 href="source/dlls/gdi/dib.c?v=wine20040914#L883">883</a> <a href="ident?v=wine20040914;i=DeleteDC">DeleteDC</a>(hdc);
<a name=L884 href="source/dlls/gdi/dib.c?v=wine20040914#L884">884</a>
<a name=L885 href="source/dlls/gdi/dib.c?v=wine20040914#L885">885</a> return hbitmap;
<a name=L886 href="source/dlls/gdi/dib.c?v=wine20040914#L886">886</a> }
<a name=L887 href="source/dlls/gdi/dib.c?v=wine20040914#L887">887</a>
<a name=L888 href="source/dlls/gdi/dib.c?v=wine20040914#L888">888</a> <b><i>/***********************************************************************</i></b>
<a name=L889 href="source/dlls/gdi/dib.c?v=wine20040914#L889">889</a> <b><i> * CreateDIBSection (GDI32.@)</i></b>
<a name=L890 href="source/dlls/gdi/dib.c?v=wine20040914#L890">890</a> <b><i> */</i></b>
<a name=L891 href="source/dlls/gdi/dib.c?v=wine20040914#L891">891</a> HBITMAP <a href="ident?v=wine20040914;i=WINAPI">WINAPI</a> <a href="ident?v=wine20040914;i=CreateDIBSection">CreateDIBSection</a>(HDC hdc, <a href="ident?v=wine20040914;i=CONST">CONST</a> BITMAPINFO *bmi, UINT <a href="ident?v=wine20040914;i=usage">usage</a>,
<a name=L892 href="source/dlls/gdi/dib.c?v=wine20040914#L892">892</a> <a href="ident?v=wine20040914;i=VOID">VOID</a> **bits, <a href="ident?v=wine20040914;i=HANDLE">HANDLE</a> <a href="ident?v=wine20040914;i=section">section</a>,
<a name=L893 href="source/dlls/gdi/dib.c?v=wine20040914#L893">893</a> DWORD offset)
<a name=L894 href="source/dlls/gdi/dib.c?v=wine20040914#L894">894</a> {
<a name=L895 href="source/dlls/gdi/dib.c?v=wine20040914#L895">895</a> return <a href="ident?v=wine20040914;i=DIB_CreateDIBSection">DIB_CreateDIBSection</a>(hdc, bmi, <a href="ident?v=wine20040914;i=usage">usage</a>, bits, <a href="ident?v=wine20040914;i=section">section</a>, offset, 0);
<a name=L896 href="source/dlls/gdi/dib.c?v=wine20040914#L896">896</a> }
<a name=L897 href="source/dlls/gdi/dib.c?v=wine20040914#L897">897</a> </pre><hr>
<div align=center>
~ <b>[</b>&nbsp;<b><i>source navigation</i></b>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="diff/dlls/gdi/dib.c?v=wine20040914">diff markup</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="ident?v=wine20040914">identifier search</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="search?v=wine20040914">freetext search</a>&nbsp;<b>]</b> ~ <b>[</b>&nbsp;<a href="find?v=wine20040914">file search</a>&nbsp;<b>]</b> ~
</div>
<hr>
This page was automatically generated by the
<a href="http:blurb.html">LXR engine</a>.
<br>
Visit the <a href="http://lxr.linux.no/">LXR main site</a> for more
information.
</html>