Civil Rights
Movements, leaders, victories and the continuing fight for equality.
Explore the people, places, events, achievements, struggles and stories that shaped our journey.
Movements, leaders, victories and the continuing fight for equality.
Innovation, patents, science, technology and world-changing contributions.
Pioneers, champions, Negro Leagues, records, activism and excellence.
Meet the people whose lives, choices and achievements shaped the journey.
Black towns, communities, institutions and places where history happened.
Moments that changed communities, movements, institutions and the nation.
In August 1908, a white mob attacked Springfield, Illinois’s Black community, destroying homes and businesses and lynching two Black men. National outrage over the violence helped spur the movement that created the NAACP the following year.
MORE →Reflects the personal views, recollections, and perspective of the author, Mike Davis.
This is a personal recollection on the Move fire on May 13, 1985


The Graphics Device Interface (GDI) is a legacy component of Microsoft Windows responsible for representing graphical objects and transmitting them to output devices such as monitors and printers. It was superseded by DirectDraw API and later Direct2D API.[citation needed] Windows apps use Windows API to interact with GDI, for such tasks as drawing lines and curves, rendering fonts, and handling 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: Mac OS had QuickDraw, and Linux and Unix have X Window System core protocol.
GDI'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 "What You See Is What You Get" applications for Microsoft Windows.
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 frames in the video card, and lacks hardware rasterization for 3D. Modern games usually use Direct3D, Vulkan, or OpenGL instead.
In GDI, a device context (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 handle to the device context (HDC). After generating the output, the handle could be released.
GDI uses a modified Bresenham's line drawing algorithm to draw aliased lines and curves, that does not round to the nearest integer.[1][2][3]
GDI was present in the initial release of Windows. MS-DOS programs had manipulated the graphics hardware using software interrupts (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 in a multitasking environment, such as Windows. BYTE magazine, in December 1983, discussed Microsoft's plans for a system to output graphics to both printers and monitors with the same code in the forthcoming first release of Windows.[4]
On Windows 3.1x and Windows 9x, GDI can use bit blit features for 2D acceleration, if a suitable graphics card driver is installed.[5]
Since Windows NT 4.0, the GDI of Windows NT was running in kernel mode;[6] but since Windows Vista, the DWM runs in user mode.
With the introduction of Windows XP, GDI+ complemented GDI. GDI+ was 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 PNG, and support for composition of affine transformations 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 SVG. Besides, .NET Framework provides a managed interface for GDI+ via the System.Drawing namespace.
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.[7]
Because of the additional text processing and resolution independence capabilities in GDI+, the CPU undertakes text rendering.[8] The result is an order of magnitude slower than the hardware-accelerated GDI.[9] 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.
GDI+ is similar (in purpose and structure) to Apple's QuickDraw GX subsystem, and the open-source libart and cairo libraries.
In Windows Vista, all Windows applications including GDI and GDI+ applications run in the new compositing engine, Desktop Window Manager (DWM), which is GPU hardware-accelerated. As such, the GDI itself is no longer hardware-accelerated.[10][11][12] Because of the nature of the composition operations, window moves can be faster or more responsive because the application does not need to re-render the underlying content.[11]
Windows 7 includes GDI hardware acceleration for blitting operations in the 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 primitive GDI operations are still not hardware-accelerated, unlike Direct2D. GDI+ continues to rely on software rendering in Windows 7.[13]
A GDI printer or Winprinter (analogous to a Winmodem) is a printer designed to accept output from a host computer running Windows, which does all print processing: GDI renders a page as a bitmap, which the computer's printer driver receives, processes, and sends to the associated printer.[14][15] Communication between the computer's GDI and driver, and the printer, is bidirectional; the printer tells the computer if it is ready to print or offline, out of paper, and so on.
A printer with its own control language can accept input from any device with a suitable driver, without requiring a PC running Windows. Such a printer requires hardware, firmware, and memory for the page rendering that the Windows host computer's GDI otherwise carries out. GDI printers can be made available to computers on a network if they are connected as shared printers on a computer running Windows. Some "generic" GDI drivers such as pnm2ppa have been written; they aim to make GDI printers compatible with non-Windows operating systems such as FreeBSD, but they cannot support all printers.[14]
To allow simpler generation of drivers for Winprinters, Microsoft developed the Universal Printer Driver. This allows printer vendors to write Generic Printer Description (GPD) "minidrivers" which describe the printer's capabilities and command set in plaintext without requiring kernel mode programming.
Microsoft has moved away from the GDI printing model with Open XML Paper Specification.
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.[16] Many applications are also incorrectly coded and fail to release GDI objects after use, which further adds to the problem.[17] 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).[18][19] Windows 8 and later increase the GDI object limit to 65,536 per user login session.
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.
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.
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's target audience are developers that use C++, C#, and Visual Basic.NET to develop Universal Windows Platform apps.[20]
Source: Wikipedia. Article content is retrieved live through the MediaWiki API.
The Graphics Device Interface (GDI) is a legacy component of Microsoft Windows responsible for representing graphical objects and transmitting them to output devices such as monitors and printers. It was superseded by DirectDraw API and later Direct2D API. Windows apps use Windows API to interact with GDI, for such tasks as drawing lines and curves, rendering fonts, and handling 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: Mac OS had QuickDraw, and Linux and Unix have X Window System core protocol. GDI'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 "What You See Is What You Get" applications for Microsoft Windows. 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 frames in the video card, and lacks hardware rasterization for 3D. Modern games usually use Direct3D, Vulkan, or OpenGL instead.
A graphics device interface is a subsystem that most operating systems use for representing graphical objects and transmitting them to output devices such as monitors and printers. In most cases, the graphics device interface is only able to draw 2D graphics and simple 3D graphics, in order to make use of more advanced graphics and keep performance, an API such as DirectX or OpenGL needs to be installed. In Microsoft Windows, the GDI functionality resides in gdi.exe on 16-bit Windows, and gdi32.dll on 32-bit Windows.
Barbarians Led by Bill Gates: Microsoft from the Inside is a book that was jointly written by Jennifer Edstrom and Marlin Eller, an American programmer who was a manager and a software developer at Microsoft Corporation from 1982 to 1995, and development lead for the Graphics Device Interface (GDI) of Windows 1.0 and also for Pen Windows. Written as a third-person account of Eller's experiences at Microsoft, it goes into detail about the early years of Microsoft and its emergence as a massive corporation. Two chapters of the book deal specifically with the business contacts between Microsoft and GO Corporation. In April 2008, as part of a larger federal court case, the gesture features of the Windows/Tablet PC operating system and hardware were found to infringe on a patent by GO Corp. concerning gesture interfaces in operating systems for portable computers.
Borland Graphics Interface, also known as BGI, is a graphics library that was bundled with several Pascal and C++ compilers for MS-DOS sold by Borland. It first shipped with version 4 of Turbo Pascal in 1987. BGI was also used to provide graphics for many other Borland products including the Quattro Pro spreadsheet. BGI was designed for 2D presentation graphics. The library loaded graphic drivers (*.BGI) and vector fonts (*.CHR) from disk in order to provide device independent graphics support. It was possible for the programmer to embed the graphic driver into the executable file by linking the graphic driver as object code with the aid of a utility provided by the compiler (bgiobj.exe). There were graphic drivers for common graphic adapters and printers of that time, such as CGA, EGA, VGA, Hercules, AT&T 400, MCGA and 3270 PC. There also were BGI drivers for some kinds of plotters. The last Borland's C++ IDE for MS-DOS is Borland C++ 3.1 (1992). The last C++ environment which supports BGI is Borland C++ 5.02 (1997), which works under Windows but can compile DOS programs. BGI was accessible in C/C++ with graphics.lib / graphics.h, and in Pascal via the graph unit.
Before the 1921 destruction of Tulsa’s Greenwood District, Black residents had created a remarkable center of business and community life. The district included stores, professional offices, entertainment venues and homes owned by Black citizens. Understanding Greenwood means learning what was built—not only what was burned.
MORE →Brown v. Board of Education in 1954.