<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Graphics_Device_Interface</id>
	<title>Graphics Device Interface - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Graphics_Device_Interface"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;action=history"/>
	<updated>2026-05-04T19:32:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;diff=4487176&amp;oldid=prev</id>
		<title>~2025-36272-61: /* External links */</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;diff=4487176&amp;oldid=prev"/>
		<updated>2025-11-27T11:44:53Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;External links&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:44, 27 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l84&quot;&gt;Line 84:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 84:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Printing technology]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Printing technology]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Windows components]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Windows components]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Text rendering libraries]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>~2025-36272-61</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;diff=3400041&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;diff=3400041&amp;oldid=prev"/>
		<updated>2025-11-15T19:05:39Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:05, 15 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot;&gt;Line 25:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;While GDI+ is included with Windows XP and later, the GDI+ dynamic library can also be shipped with an application and used on older versions of Windows.&amp;lt;ref&amp;gt;[http://www.microsoft.com/downloads/details.aspx?FamilyId=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&amp;amp;displaylang=en Platform SDK Redistributable: GDI+]&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;While GDI+ is included with Windows XP and later, the GDI+ dynamic library can also be shipped with an application and used on older versions of Windows.&amp;lt;ref&amp;gt;[http://www.microsoft.com/downloads/details.aspx?FamilyId=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&amp;amp;displaylang=en Platform SDK Redistributable: GDI+]&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because of the additional text processing and resolution independence capabilities in GDI+, the CPU undertakes text rendering.&amp;lt;ref&amp;gt;{{cite web|url=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://blogs.msdn.com/directx/archive/2009/05/12/2d-drawing-apis-in-windows.aspx |title=2D Drawing APIs in Windows - |work=DirectX Developer Blog |publisher=MSDN Blogs |date=May 12, 2009 |access-date=July 19, 2012}}&amp;lt;/ref&amp;gt; The result is an order of magnitude slower than the [[Hardware acceleration|hardware-accelerated]] GDI.&amp;lt;ref&amp;gt;{{cite web&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because of the additional text processing and resolution independence capabilities in GDI+, the CPU undertakes text rendering.&amp;lt;ref&amp;gt;{{cite web|url=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://blogs.msdn.com/directx/archive/2009/05/12/2d-drawing-apis-in-windows.aspx |title=2D Drawing APIs in Windows - |work=DirectX Developer Blog |publisher=MSDN Blogs |date=May 12, 2009 |access-date=July 19, 2012}}&amp;lt;/ref&amp;gt; The result is an order of magnitude slower than the [[Hardware acceleration|hardware-accelerated]] GDI.&amp;lt;ref&amp;gt;{{cite web&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|url=http://blogs.msdn.com/cjacks/archive/2006/05/19/gdi-vs-gdi-text-rendering-performance.aspx&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|url=http://blogs.msdn.com/cjacks/archive/2006/05/19/gdi-vs-gdi-text-rendering-performance.aspx&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|title=GDI vs. GDI+ Text Rendering Performance&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|title=GDI vs. GDI+ Text Rendering Performance&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l37&quot;&gt;Line 37:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 37:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Windows Vista===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Windows Vista===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In Windows Vista, all Windows applications including GDI and GDI+ applications run in the new compositing engine, [[Desktop Window Manager]] (DWM), which is hardware-accelerated. As such, the GDI itself is no longer hardware-accelerated.&amp;lt;ref&amp;gt;[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://msdn.microsoft.com/en-us/library/windows/desktop/ff729480 MSDN: Comparing Direct2D and GDI Hardware Acceleration]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&quot;Greg SchechterBlog&quot;&amp;gt;[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://blogs.msdn.com/greg_schechter/archive/2006/03/10/549310.aspx GDI is not hardware accelerated in Windows Vista]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://blogs.msdn.com/seema/archive/2006/10/25/layered-windows-sw-is-sometimes-faster-than-hw.aspx Layered windows...SW is sometimes faster than HW]. Avalite on MSDN Blogs.&amp;lt;/ref&amp;gt; Because of the nature of the composition operations, window moves can be faster or more responsive because underlying content does not need to be re-rendered by the application.&amp;lt;ref name=&quot;Greg SchechterBlog&quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In Windows Vista, all Windows applications including GDI and GDI+ applications run in the new compositing engine, [[Desktop Window Manager]] (DWM), which is hardware-accelerated. As such, the GDI itself is no longer hardware-accelerated.&amp;lt;ref&amp;gt;[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://msdn.microsoft.com/en-us/library/windows/desktop/ff729480 MSDN: Comparing Direct2D and GDI Hardware Acceleration]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&quot;Greg SchechterBlog&quot;&amp;gt;[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://blogs.msdn.com/greg_schechter/archive/2006/03/10/549310.aspx GDI is not hardware accelerated in Windows Vista]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://blogs.msdn.com/seema/archive/2006/10/25/layered-windows-sw-is-sometimes-faster-than-hw.aspx Layered windows...SW is sometimes faster than HW]. Avalite on MSDN Blogs.&amp;lt;/ref&amp;gt; Because of the nature of the composition operations, window moves can be faster or more responsive because underlying content does not need to be re-rendered by the application.&amp;lt;ref name=&quot;Greg SchechterBlog&quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Windows 7===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Windows 7===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;Line 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== GDI printers ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== GDI printers ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A GDI printer or &#039;&#039;&#039;Winprinter&#039;&#039;&#039; (analogous to a [[Winmodem]]) is a printer designed to accept output from a host computer running Windows&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. The host computer &lt;/del&gt;does all print processing: GDI renders a page as a bitmap, which the [[printer driver]] receives, processes, and sends to the associated printer.&amp;lt;ref name=&quot;linuxprinting&quot;&amp;gt;{{cite web|title=Generic GDI Printer|url=https://www.openprinting.org/printer/Generic/Generic-GDI_Printer|access-date=21 July 2021|website=Open Printing|publisher=The Linux Foundation}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=Windows-only printers |url=https://www.tldp.org/HOWTO/Printing-HOWTO/winprinters.html |publisher=[[Linux Documentation Project]] |access-date=October 29, 2019}}&amp;lt;/ref&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; The combination of &lt;/del&gt;GDI and the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;driver &lt;/del&gt;is bidirectional; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;they receive information from &lt;/del&gt;the printer &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;such as whether &lt;/del&gt;it is ready to print or &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is &lt;/del&gt;out of paper.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A GDI printer or &#039;&#039;&#039;Winprinter&#039;&#039;&#039; (analogous to a [[Winmodem]]) is a printer designed to accept output from a host computer running Windows&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, which &lt;/ins&gt;does all print processing: GDI renders a page as a bitmap, which the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;computer&#039;s &lt;/ins&gt;[[printer driver]] receives, processes, and sends to the associated printer.&amp;lt;ref name=&quot;linuxprinting&quot;&amp;gt;{{cite web|title=Generic GDI Printer|url=https://www.openprinting.org/printer/Generic/Generic-GDI_Printer|access-date=21 July 2021|website=Open Printing|publisher=The Linux Foundation}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=Windows-only printers |url=https://www.tldp.org/HOWTO/Printing-HOWTO/winprinters.html |publisher=[[Linux Documentation Project]] |access-date=October 29, 2019}}&amp;lt;/ref&amp;gt; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Communication between the computer&#039;s &lt;/ins&gt;GDI &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and driver, &lt;/ins&gt;and the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;printer, &lt;/ins&gt;is bidirectional; the printer &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tells the computer if &lt;/ins&gt;it is ready to print or &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;offline, &lt;/ins&gt;out of paper&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and so on&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Printers that do not rely on GDI require hardware, firmware, and memory for page rendering while a GDI printer uses the host computer for this. However, a &lt;/del&gt;printer with its own control language can accept input from any device with a suitable driver, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;while &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GDI &lt;/del&gt;printer requires &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a PC running &lt;/del&gt;Windows. GDI printers can be made available to computers on a network if they are connected as shared printers on a computer &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;which is on and &lt;/del&gt;running Windows. Some &quot;generic&quot; GDI drivers such as &amp;lt;code&amp;gt;pnm2ppa&amp;lt;/code&amp;gt; have been written; they aim to make GDI printers compatible with non-Windows operating systems such as [[FreeBSD]], but they cannot support all printers.&amp;lt;ref name=&quot;linuxprinting&quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A &lt;/ins&gt;printer with its own &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Page description language|&lt;/ins&gt;control language&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] &lt;/ins&gt;can accept input from any device with a suitable driver, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;without requiring a PC running Windows. Such &lt;/ins&gt;a printer requires &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hardware, firmware, and memory for the page rendering that the &lt;/ins&gt;Windows &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;host computer&#039;s GDI otherwise carries out&lt;/ins&gt;. GDI printers can be made available to computers on a network if they are connected as shared printers on a computer running Windows. Some &quot;generic&quot; GDI drivers such as &amp;lt;code&amp;gt;pnm2ppa&amp;lt;/code&amp;gt; have been written; they aim to make GDI printers compatible with non-Windows operating systems such as [[FreeBSD]], but they cannot support all printers.&amp;lt;ref name=&quot;linuxprinting&quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In order to &lt;/del&gt;allow simpler &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;creation &lt;/del&gt;of drivers for Winprinters, the [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Microsoft &lt;/del&gt;Universal Printer Driver]] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;was created&lt;/del&gt;. This allows printer vendors to write Generic Printer Description (GPD) &quot;minidrivers&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;which describe the printer&#039;s capabilities and command set in plaintext&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, rather than having to do &lt;/del&gt;kernel mode &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;driver development&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;To &lt;/ins&gt;allow simpler &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;generation &lt;/ins&gt;of drivers for Winprinters, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Microsoft developed &lt;/ins&gt;the [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Unidrv|&lt;/ins&gt;Universal Printer Driver]]. This allows printer vendors to write Generic Printer Description (GPD) &quot;minidrivers&quot; which describe the printer&#039;s capabilities and command set in plaintext &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;without requiring &lt;/ins&gt;kernel mode &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;programming&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Microsoft has moved away from &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;this &lt;/del&gt;printing model with [[Open XML Paper Specification]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Microsoft has moved away from &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the GDI &lt;/ins&gt;printing model with [[Open XML Paper Specification]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Limitations ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Limitations ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Each window consumes GDI objects. As the complexity of the window increases, with additional features such as buttons and images, its GDI object usage also increases. When too many objects are in use, Windows is unable to draw any more GDI objects, leading to misbehaving software and frozen and unresponsive program operation.&amp;lt;ref&amp;gt;Microsoft Knowledgebase article 838283 - Desktop application menus are improperly displayed if a process exceeds its GDI object quota in Windows XP or in Windows 2000 http://support.microsoft.com/kb/838283&amp;lt;/ref&amp;gt; Many applications are also incorrectly coded and fail to release GDI objects after use, which further adds to the problem.&amp;lt;ref&amp;gt;Microsoft Developer Network Blog - GDI leak in Outlook 2007 causes problems when GDI usage reaches 10,000 objects &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://blogs.msdn.com/rgregg/archive/2007/09/03/outlook-2007-gdi-leak-hotfix.aspx&amp;lt;/ref&amp;gt; The total available GDI objects varies from one version of Windows to the next: [[Windows 9x]] had a limit of 1,200 total objects; Windows 2000 has a limit of 16,384 objects; and Windows XP and later have a configurable limit (via the registry) that defaults to 10,000 objects per process (but a theoretical maximum of 65,536 for the entire session).&amp;lt;ref&amp;gt;Microsoft Developer Network - GDI Object limits &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Microsoft Knowledge base Article 894500 - .NET programs designed on newer NT operating systems may malfunction on older Win 95 / Win 98 / Win ME due to lower GDI usage limits http://support.microsoft.com/kb/894500&amp;lt;/ref&amp;gt; Windows 8 and later increase the GDI object limit to 65,536 per user login session.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Each window consumes GDI objects. As the complexity of the window increases, with additional features such as buttons and images, its GDI object usage also increases. When too many objects are in use, Windows is unable to draw any more GDI objects, leading to misbehaving software and frozen and unresponsive program operation.&amp;lt;ref&amp;gt;Microsoft Knowledgebase article 838283 - Desktop application menus are improperly displayed if a process exceeds its GDI object quota in Windows XP or in Windows 2000 http://support.microsoft.com/kb/838283&amp;lt;/ref&amp;gt; Many applications are also incorrectly coded and fail to release GDI objects after use, which further adds to the problem.&amp;lt;ref&amp;gt;Microsoft Developer Network Blog - GDI leak in Outlook 2007 causes problems when GDI usage reaches 10,000 objects &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://blogs.msdn.com/rgregg/archive/2007/09/03/outlook-2007-gdi-leak-hotfix.aspx&amp;lt;/ref&amp;gt; The total available GDI objects varies from one version of Windows to the next: [[Windows 9x]] had a limit of 1,200 total objects; Windows 2000 has a limit of 16,384 objects; and Windows XP and later have a configurable limit (via the registry) that defaults to 10,000 objects per process (but a theoretical maximum of 65,536 for the entire session).&amp;lt;ref&amp;gt;Microsoft Developer Network - GDI Object limits &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Microsoft Knowledge base Article 894500 - .NET programs designed on newer NT operating systems may malfunction on older Win 95 / Win 98 / Win ME due to lower GDI usage limits http://support.microsoft.com/kb/894500&amp;lt;/ref&amp;gt; Windows 8 and later increase the GDI object limit to 65,536 per user login session.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Earlier versions of Windows such as Windows 3.1 and Windows 98 included a Resource Meter program to allow the user to monitor how much of the total system GDI resources were in use. This resource meter consumed GDI objects itself. Later versions such as Windows 2000 and Windows XP can report GDI object usage for each program in the Task Manager, but they cannot tell the user the total GDI capacity available.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Earlier versions of Windows such as Windows 3.1 and Windows 98 included a Resource Meter program to allow the user to monitor how much of the total system GDI resources were in use. This resource meter consumed GDI objects itself. Later versions such as Windows 2000 and Windows XP can report GDI object usage for each program in the Task Manager, but they cannot tell the user the total GDI capacity available.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l71&quot;&gt;Line 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 71:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://web.archive.org/web/20080412030137/http://msdn2.microsoft.com/en-us/library/ms533797.aspx Microsoft&amp;#039;s GDI+ page]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://web.archive.org/web/20080412030137/http://msdn2.microsoft.com/en-us/library/ms533797.aspx Microsoft&amp;#039;s GDI+ page]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.bobpowell.net/faqmain.htm Bob Powell&amp;#039;s GDI+ FAQ list]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.bobpowell.net/faqmain.htm Bob Powell&amp;#039;s GDI+ FAQ list]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://msdn2.microsoft.com/en-us/library/aa286572.aspx MSDN article on GDI overview]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://msdn2.microsoft.com/en-us/library/aa286572.aspx MSDN article on GDI overview]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx Microsoft Security Bulletin MS04-028]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx Microsoft Security Bulletin MS04-028]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.f-secure.com/news/items/news_2004100500.shtml F-Secure: Critical vulnerability in MS Windows may escalate the virus threat  ] {{Webarchive|url=https://web.archive.org/web/20090204105414/http://www.f-secure.com/news/items/news_2004100500.shtml |date=2009-02-04 }}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://www.f-secure.com/news/items/news_2004100500.shtml F-Secure: Critical vulnerability in MS Windows may escalate the virus threat  ] {{Webarchive|url=https://web.archive.org/web/20090204105414/http://www.f-secure.com/news/items/news_2004100500.shtml |date=2009-02-04 }}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;diff=106354&amp;oldid=prev</id>
		<title>2A02:C7C:C3B2:1A00:4449:1007:A958:44BE at 15:07, 12 April 2025</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Graphics_Device_Interface&amp;diff=106354&amp;oldid=prev"/>
		<updated>2025-04-12T15:07:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Microsoft Windows API}}&lt;br /&gt;
[[File:Windows_2000_architecture.svg|thumb|The Graphics Device Interface in the [[architecture of Windows NT]]]]&lt;br /&gt;
[[File:GDK software architecture.svg|thumb|For example [[GDK]] makes use of &amp;#039;&amp;#039;&amp;#039;GDI&amp;#039;&amp;#039;&amp;#039;.]]&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Graphics Device Interface&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;GDI&amp;#039;&amp;#039;&amp;#039;) is a legacy component of [[Microsoft Windows]] responsible for representing graphical objects and transmitting them to [[output devices]] such as [[computer display|monitors]] and [[computer printer|printers]]. It was superseded by [[DirectDraw]] API and later [[Direct2D]] API.{{Citation needed|date=May 2023}} Windows apps use [[Windows API]] to interact with GDI, for such tasks as drawing lines and curves, rendering [[Typeface|fonts]], and handling [[Palette (computing)|palettes]]. The [[Windows USER]] subsystem uses GDI to render such UI elements as window frames and menus. Other systems have components that are similar to GDI; for example: [[Classic Mac OS|Mac OS]] had [[QuickDraw]], and [[Linux]] and [[Unix]] have [[X Window System]] core protocol.&lt;br /&gt;
&lt;br /&gt;
GDI&amp;#039;s most significant advantages over more direct methods of accessing the hardware are perhaps its scaling capabilities and its abstract representation of target devices.  Using GDI, it is possible to draw on multiple devices, such as a screen and a printer, and expect proper reproduction in each case.  This capability is at the center of most &amp;quot;[[WYSIWYG|What You See Is What You Get]]&amp;quot; applications for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
Simple games that do not require fast graphics rendering may use GDI. However, GDI is relatively hard to use for advanced animation, lacks a notion for synchronizing with individual [[video frame]]s in the [[video card]], and lacks hardware [[rasterization]] for 3D. Modern games usually use [[DirectX]], [[Vulkan]], or [[OpenGL]] instead.&lt;br /&gt;
&lt;br /&gt;
==Technical details==&lt;br /&gt;
In GDI, a &amp;#039;&amp;#039;device context&amp;#039;&amp;#039; (DC) defines the attributes of text and images for the output device, e.g., screen or printer. GDI maintains the actual context.  Generating the output requires a &amp;#039;&amp;#039;handle to the device context&amp;#039;&amp;#039; (HDC). After generating the output, the handle could be released.&lt;br /&gt;
&lt;br /&gt;
GDI uses [[Bresenham&amp;#039;s line algorithm|Bresenham&amp;#039;s line drawing algorithm]] to draw aliased lines.&amp;lt;ref&amp;gt;{{cite web |last1=Steven |first1=White |last2=David |first2=Coulter |last3=Mike |first3=Jacobs |title=Comparing Direct2D and GDI Hardware Acceleration |url=https://docs.microsoft.com/en-us/windows/win32/direct2d/comparing-direct2d-and-gdi |website=Windows Developer |publisher=[[Microsoft]] |date=31 May 2018}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version history==&lt;br /&gt;
&lt;br /&gt;
===Early versions===&lt;br /&gt;
GDI was present in the initial release of Windows. MS-DOS programs had manipulated the graphics hardware using [[software interrupt]]s (sometimes via the [[Video BIOS]]) and by manipulating [[video memory]] directly. Code written in this way expects that it is the only user of the video memory, which was not tenable on a [[Computer multitasking|multi-tasked environment]], such as Windows. The &amp;#039;&amp;#039;[[BYTE]]&amp;#039;&amp;#039; magazine, in December 1983, discussed Microsoft&amp;#039;s plans for a system to output graphics to both printers and monitors with the same code in the forthcoming first release of Windows.&amp;lt;ref name=&amp;quot;butler198312&amp;quot;&amp;gt;{{cite news | url=https://archive.org/stream/byte-magazine-1983-12/1983_12_BYTE_08-12_Easy_Software#page/n49/mode/2up | title=Device-Independent Graphics Output for Microsoft Windows | work=BYTE | date=December 1983 | access-date=20 October 2013 | author=Butler, John | pages=49}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On [[Windows 3.1x]] and [[Windows 9x]], GDI can use [[Bit blit]] features for 2D acceleration, if suitable [[graphics card]] driver is installed.&amp;lt;ref&amp;gt;{{Cite web|url=https://www.dosdays.co.uk/media/cirrus_logic/CL-GD543X_Applications_and_Eratta_Book_Apr94.pdf|title=CL-GD543X Applications and Errata Book - Revision 1.2|publisher=[[Cirrus Logic]]|date=April 1994|access-date=January 4, 2025}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows XP===&lt;br /&gt;
With the introduction of [[Windows XP]], &amp;#039;&amp;#039;&amp;#039;GDI+&amp;#039;&amp;#039;&amp;#039; complemented GDI. GDI+ has been written in C++. It adds anti-aliased 2D graphics, floating point coordinates, gradient shading, more complex path management, intrinsic support for modern graphics-file formats like [[JPEG]] and [[Portable Network Graphics|PNG]], and support for composition of [[affine transformation]]s in the 2D view pipeline. GDI+ uses [[RGBA]] values to represent color. Use of these features is apparent in Windows XP components, such as [[Microsoft Paint]], [[Windows Picture and Fax Viewer]], Photo Printing Wizard, and the My Pictures Slideshow screensaver. Their presence in the basic graphics layer greatly simplifies implementations of vector-graphics systems such as [[Adobe Flash]] or [[Scalable Vector Graphics|SVG]]. Besides, [[.NET Framework]] provides a managed interface for GDI+ via the &amp;lt;code&amp;gt;System.Drawing&amp;lt;/code&amp;gt; [[namespace]].&lt;br /&gt;
&lt;br /&gt;
While GDI+ is included with Windows XP and later, the GDI+ dynamic library can also be shipped with an application and used on older versions of Windows.&amp;lt;ref&amp;gt;[http://www.microsoft.com/downloads/details.aspx?FamilyId=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&amp;amp;displaylang=en Platform SDK Redistributable: GDI+]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because of the additional text processing and resolution independence capabilities in GDI+, the CPU undertakes text rendering.&amp;lt;ref&amp;gt;{{cite web|url=http://blogs.msdn.com/directx/archive/2009/05/12/2d-drawing-apis-in-windows.aspx |title=2D Drawing APIs in Windows - |work=DirectX Developer Blog |publisher=MSDN Blogs |date=May 12, 2009 |access-date=July 19, 2012}}&amp;lt;/ref&amp;gt; The result is an order of magnitude slower than the [[Hardware acceleration|hardware-accelerated]] GDI.&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
|url=http://blogs.msdn.com/cjacks/archive/2006/05/19/gdi-vs-gdi-text-rendering-performance.aspx&lt;br /&gt;
|title=GDI vs. GDI+ Text Rendering Performance&lt;br /&gt;
|last=Jackson&lt;br /&gt;
|first=Chris&lt;br /&gt;
|work=Chris Jackson&amp;#039;s Semantic Consonance&lt;br /&gt;
|publisher=Microsoft&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;  Chris Jackson published some tests indicating that a piece of text rendering code he had written could render 99,000 glyphs per second in GDI, but the same code using GDI+ rendered 16,600 glyphs per second.&lt;br /&gt;
&lt;br /&gt;
GDI+ is similar (in purpose and structure) to [[Apple Inc.|Apple]]{{&amp;#039;}}s &amp;#039;&amp;#039;[[QuickDraw GX]]&amp;#039;&amp;#039; subsystem, and the open-source &amp;#039;&amp;#039;[[libart]]&amp;#039;&amp;#039; and [[Cairo (graphics)|Cairo]] libraries.&lt;br /&gt;
&lt;br /&gt;
===Windows Vista===&lt;br /&gt;
In Windows Vista, all Windows applications including GDI and GDI+ applications run in the new compositing engine, [[Desktop Window Manager]] (DWM), which is hardware-accelerated. As such, the GDI itself is no longer hardware-accelerated.&amp;lt;ref&amp;gt;[http://msdn.microsoft.com/en-us/library/windows/desktop/ff729480 MSDN: Comparing Direct2D and GDI Hardware Acceleration]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Greg SchechterBlog&amp;quot;&amp;gt;[http://blogs.msdn.com/greg_schechter/archive/2006/03/10/549310.aspx GDI is not hardware accelerated in Windows Vista]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://blogs.msdn.com/seema/archive/2006/10/25/layered-windows-sw-is-sometimes-faster-than-hw.aspx Layered windows...SW is sometimes faster than HW]. Avalite on MSDN Blogs.&amp;lt;/ref&amp;gt; Because of the nature of the composition operations, window moves can be faster or more responsive because underlying content does not need to be re-rendered by the application.&amp;lt;ref name=&amp;quot;Greg SchechterBlog&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows 7===&lt;br /&gt;
[[Windows 7]] includes GDI hardware acceleration for [[blitting]] operations in the [[Windows Display Driver Model#WDDM 1.1|Windows Display Driver Model v1.1]]. This improves GDI performance and allows DWM to use local video memory for compositing, thereby reducing system [[memory footprint]] and increasing the performance of graphics operations. Most [[Geometric primitive|primitive]] GDI operations are still not hardware-accelerated, unlike [[Direct2D]]. GDI+ continues to rely on software rendering in Windows 7.&amp;lt;ref name=&amp;quot;Direct2D_intro&amp;quot;&amp;gt;{{cite web |url=https://blogs.technet.microsoft.com/thomasolsen/2008/10/29/introducing-the-microsoft-direct2d-api/ |title=Introducing the Microsoft Direct2D API |author=Thomas Olsen |date=October 29, 2008}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GDI printers ==&lt;br /&gt;
A GDI printer or &amp;#039;&amp;#039;&amp;#039;Winprinter&amp;#039;&amp;#039;&amp;#039; (analogous to a [[Winmodem]]) is a printer designed to accept output from a host computer running Windows. The host computer does all print processing: GDI renders a page as a bitmap, which the [[printer driver]] receives, processes, and sends to the associated printer.&amp;lt;ref name=&amp;quot;linuxprinting&amp;quot;&amp;gt;{{cite web|title=Generic GDI Printer|url=https://www.openprinting.org/printer/Generic/Generic-GDI_Printer|access-date=21 July 2021|website=Open Printing|publisher=The Linux Foundation}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=Windows-only printers |url=https://www.tldp.org/HOWTO/Printing-HOWTO/winprinters.html |publisher=[[Linux Documentation Project]] |access-date=October 29, 2019}}&amp;lt;/ref&amp;gt;  The combination of GDI and the driver is bidirectional; they receive information from the printer such as whether it is ready to print or is out of paper.&lt;br /&gt;
&lt;br /&gt;
Printers that do not rely on GDI require hardware, firmware, and memory for page rendering while a GDI printer uses the host computer for this. However, a printer with its own control language can accept input from any device with a suitable driver, while a GDI printer requires a PC running Windows. GDI printers can be made available to computers on a network if they are connected as shared printers on a computer which is on and running Windows. Some &amp;quot;generic&amp;quot; GDI drivers such as &amp;lt;code&amp;gt;pnm2ppa&amp;lt;/code&amp;gt; have been written; they aim to make GDI printers compatible with non-Windows operating systems such as [[FreeBSD]], but they cannot support all printers.&amp;lt;ref name=&amp;quot;linuxprinting&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to allow simpler creation of drivers for Winprinters, the [[Microsoft Universal Printer Driver]] was created. This allows printer vendors to write Generic Printer Description (GPD) &amp;quot;minidrivers&amp;quot;, which describe the printer&amp;#039;s capabilities and command set in plaintext, rather than having to do kernel mode driver development.&lt;br /&gt;
&lt;br /&gt;
Microsoft has moved away from this printing model with [[Open XML Paper Specification]].&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
Each window consumes GDI objects. As the complexity of the window increases, with additional features such as buttons and images, its GDI object usage also increases. When too many objects are in use, Windows is unable to draw any more GDI objects, leading to misbehaving software and frozen and unresponsive program operation.&amp;lt;ref&amp;gt;Microsoft Knowledgebase article 838283 - Desktop application menus are improperly displayed if a process exceeds its GDI object quota in Windows XP or in Windows 2000 http://support.microsoft.com/kb/838283&amp;lt;/ref&amp;gt; Many applications are also incorrectly coded and fail to release GDI objects after use, which further adds to the problem.&amp;lt;ref&amp;gt;Microsoft Developer Network Blog - GDI leak in Outlook 2007 causes problems when GDI usage reaches 10,000 objects http://blogs.msdn.com/rgregg/archive/2007/09/03/outlook-2007-gdi-leak-hotfix.aspx&amp;lt;/ref&amp;gt; The total available GDI objects varies from one version of Windows to the next: [[Windows 9x]] had a limit of 1,200 total objects; Windows 2000 has a limit of 16,384 objects; and Windows XP and later have a configurable limit (via the registry) that defaults to 10,000 objects per process (but a theoretical maximum of 65,536 for the entire session).&amp;lt;ref&amp;gt;Microsoft Developer Network - GDI Object limits http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Microsoft Knowledge base Article 894500 - .NET programs designed on newer NT operating systems may malfunction on older Win 95 / Win 98 / Win ME due to lower GDI usage limits http://support.microsoft.com/kb/894500&amp;lt;/ref&amp;gt; Windows 8 and later increase the GDI object limit to 65,536 per user login session.&lt;br /&gt;
&lt;br /&gt;
Earlier versions of Windows such as Windows 3.1 and Windows 98 included a Resource Meter program to allow the user to monitor how much of the total system GDI resources were in use. This resource meter consumed GDI objects itself. Later versions such as Windows 2000 and Windows XP can report GDI object usage for each program in the Task Manager, but they cannot tell the user the total GDI capacity available.&lt;br /&gt;
&lt;br /&gt;
Overflowing GDI capacity can affect Windows itself, preventing new windows from opening, menus from displaying, and alert boxes from appearing. The situation can be difficult to clear and can potentially require a forced reset of the system, since it prevents core system programs from functioning. In Windows 8 and 8.1, a forced log-off occurs as a result of GDI capacity overflow, instead of a reboot.&lt;br /&gt;
&lt;br /&gt;
== Successor ==&lt;br /&gt;
[[Direct2D]] is the successor of GDI and GDI+. Its sibling, [[DirectWrite]], replaces [[Uniscribe]]. They were shipped with Windows 7 and Windows Server 2008 R2, and were available for Windows Vista and Windows Server 2008 (with Platform Update installed). Later, Microsoft developed [[Win2D]], a [[free and open-source]] GDI-like class library. Win2D&amp;#039;s target audience are developers that use C++, C#, and Visual Basic.NET to develop [[Universal Windows Platform apps]].&amp;lt;ref&amp;gt;{{Cite web|title=Win2D|url=https://github.com/microsoft/Win2D|access-date=21 July 2021|website=microsoft/Win2D repo|publisher=Microsoft|via=[[GitHub.com]]}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[WinG]]&lt;br /&gt;
* [[Microsoft Windows library files]]&lt;br /&gt;
&lt;br /&gt;
==Notes and references==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://web.archive.org/web/20080412030137/http://msdn2.microsoft.com/en-us/library/ms533797.aspx Microsoft&amp;#039;s GDI+ page]&lt;br /&gt;
* [http://www.bobpowell.net/faqmain.htm Bob Powell&amp;#039;s GDI+ FAQ list]&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/aa286572.aspx MSDN article on GDI overview]&lt;br /&gt;
* [http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx Microsoft Security Bulletin MS04-028]&lt;br /&gt;
* [http://www.f-secure.com/news/items/news_2004100500.shtml F-Secure: Critical vulnerability in MS Windows may escalate the virus threat  ] {{Webarchive|url=https://web.archive.org/web/20090204105414/http://www.f-secure.com/news/items/news_2004100500.shtml |date=2009-02-04 }}&lt;br /&gt;
* [http://www.igdiplus.org IGDI+] - [[Delphi (programming language)|Delphi]] Open Source GDI+ library.&lt;br /&gt;
&lt;br /&gt;
{{Windows Components}}&lt;br /&gt;
{{Microsoft APIs}}&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Graphics libraries]]&lt;br /&gt;
[[Category:Microsoft application programming interfaces]]&lt;br /&gt;
[[Category:Printing technology]]&lt;br /&gt;
[[Category:Windows components]]&lt;/div&gt;</summary>
		<author><name>2A02:C7C:C3B2:1A00:4449:1007:A958:44BE</name></author>
	</entry>
</feed>