DisplayCore

About DisplayCore

Modular Design

At the heart of the DisplayCore design is its modular nature. Allowing you to choose which modules you include in your software means less wasted or redundant code.

At the top of the hierarchy is the master DisplayCore class. This handles all the drawing routines and defines the standard interface for all display devices and image handling classes. From this descend the display devices themselves and the classes to display and manipulate image files. This means that all the display devices get the same standard interface with the same standard functions. A display device is now a light-weight abstracted object which just has to implement the initialization of and communication with the display itself. A display class can also override a number of the DisplayCore functions to provide hardware accelerated functionality for even faster drawing routines.

The heirarchy also means that images themselves are effectively classed as display devices, and indeed the Framebuffer group of image classes leverage this to create off-screen drawing areas for fast preparation of display data. Anything you can do on a display you can do with a Framebuffer object, and theoretically any image format could be manipulated in this way.

Image classes also reference the Filter class. This provides powerful real-time manipulation of images with respect to such things as brightness, contrast, colourising, film grain, and more. Yes, even Framebuffers, since they are just Image objects, can use filters.

Descending from the Image class is the Widget class. This effectively turns images into interactive objects with event handlers (tap, press, release, drag, etc) for creating rich interactive displays.

Touch screens also provide a standard interface through the Touch interface class.

With this design it is possible to completely change your software from using one display system to a completely different one (even a different display technology entirely) by just changing a handful of lines.

Share

Core

This is the core libraries of DisplayCore. Everything else stems from these libraries.

DisplayCore

Display

These are all the display device drivers.  Some are split into multiple libraries which have a "base" library which implements the display control, coupled with a number of "interface" libraries which implement the physical interface to the display (SPI, I2C, etc).

Aggregate virtual
BD663474 tft
Diablo16 tft
Goldelox oled
HX8347D tft
ILI9163 tft
ILI9325 tft
ILI9340 tft
ILI9341 tft
ILI9342 tft
ILI9481 tft
ILI9488 tft
KS0108 lcd
LM6800 lcd
NativeFB native
NeoMatrix led
PG25664CG oled
Picadillo tft
S6D0154 tft
SDL native
SH1106 oled, base
SH1106_BBSPI oled, interface
SH1106_DSPI oled, interface
SH1106_DTWI oled, interface
SSD1289 tft
SSD1306 oled, base
SSD1306_BBSPI oled, interface
SSD1306_DSPI oled, interface
SSD1306_DTWI oled, interface
SSD1306_PMOD oled, interface
SSD1963 tft
ST7735 tft
T6963 lcd
VGA analog
VGA2 analog
VLCD virtual

Emulator

Emulators are kind of the opposite of a DisplayCore display device. They pretend to be a physical TFT or LCD screen and capture the image data in a framebuffer which can be manipulated as if it were an image.

AkaiPMP
AkaiSPI
EmuT6963

Filter

Filters allow the realtime manipulation of images. Change the hue, brightness, contrast, and other useful effects.

Filters

Font

Fonts make up the biggest portion of DisplayCore. There's fonts for everything you can imagine. Game fonts, sophisticated fonts, fun fonts, computerised fonts... You name it, there's a font for it.

Acorn
Acorn8x8
AlienLeague
AmerikaSans
AmigaFont
AmigaFont2
Aquarius
Arial
ArialBold
ArmyRust
Asenine
Assassin
Atari
AtariButtons
AVOP
Bisasam
Blazed
Blox
BPmono
BPMonoItalic
BunnyMambo
Cambridge
Carbine
Clive
ComfortAA
Comic
CP111
CP112
CP113
CP437
CP737
CP850
CP851
CP852
CP853
CP860
CP861
CP862
CP863
CP864
CP865
CP866
CP880
CP881
CP882
CP883
CP884
CP885
CutiveMono
DejaVuSans
DejaVuSansMono
Display7Seg
Display7SegShadow
Doorly
DOS
EBGaramond
EmporiumNF
EngliBesh
FiraMono
Font44
Gem
GeorgiaBoldItalic
GeosansLight
Hack
Hazard
Icon8
Ingot
Instruction
Kimberley
LarabiefontFree
LCARS
LCDish
LedMatrixBright
LedMatrixDim
Liberation
LiberationSans
LightningBolts
Linux10x18
Linux6x10
Linux7x14
MINI4x6
OCRAExtended
OldStandard
OneSlot
Open24Display
PEARL8x8
Pipes
ProFont6x11
Quando
RawGold
Roboto
SheepSans
Sinclair
squaredealRegular
Squircle
SUN12x22
SUN8x16
Targa
TargaMS
TargaMSHand
Terminus6x12
Topaz
TorweltenMono
Ubuntu
Unicode
VGA8x16
VGA8x8
VT323
WhiteRabbit
XTerm

Iconset

Icon sets are used (usually) in conjunction with certain widget systems. For example the MonoIcon widget set. Icon sets are monochrome with alpha blending information. It's down to the widget set to provide the colour.

Brankic
Ecqlipse32
Ecqlipse48
Gentleface32
Gentleface48
Iconic
PICOL
Tutorial9Mono

Image

Displaying images is one of the most basic things you can want to do with a display. So we support many image types, including BMP, JPEG, BMP and raw RGB565 images.

BinaryVector
BMP
BMPFile
Framebuffer332
Framebuffer565
FramebufferIndexed
FramebufferRambo
JPEG
PNG
Raw565

Touch

A display wouldn't be much use without a touchscreen interface, so these drivers implement the most common interfaces.

AnalogTouch
LinuxEvent
XPT2046

Utilities

These are utilities, both for your programs and for manipiulating resources for use by your programs.

ScreenDump
Tools

Widget

Widgets give you easy interactive control with your display. Buttons, sliders, switches, etc. 

gciWidget
LCARSInterface
MonoIcon
ShinyButton
Widgets