Giter VIP home page Giter VIP logo

joybubbles's Introduction

1. Joybubbles

Joy is an intense and especially ecstatic or exultant happiness. Joybubbles is
the name of a real-life hacker who inspired the character Whistler in the 1992
caper film Sneakers.

The Joybubbles API provides a system-level abstraction for a windowing system
or a low-level graphics API and provides the basis for a GUI toolkit
implementation. Joybubbles provides the following interfaces:

	. graphics hardware
	. window management
	. input devices
	. GUI widgets

Joybubbles is designed to be easily ported to new embedded systems. As such,
it cuts out most of the fat in other platform abstractions. Joybubbles doesn't
add yet another input event abstraction. Chances are highly likely that your
system already has input events and an input event queue. When you port
Joybubbles to your system you just need to make sure that actions are sent to
the correct window.

2. Graphics Hardware

The graphics hardware abstraction provides an abstract interface to hardware
specific APIs.

2.1 Application

The application object represents a display adapter (i.e. GPU, blitter,
graphics card, etc). The application is a context through which other objects
are accessed.

2.2 Screen

A screen represents a screen connected to the display adapter. A screen may
extend across multiple physical monitors (i.e. a multi-head setup).

Additionally a display may have multiple discrete screens attached (i.e. a
set-top box in dual-user mode).

Screens have the physical dimensions of width and height.

3. Window Management

Window management refers the placement and appearance of windows on the
screen.

3.1 Window

A window is a drawable area on the screen. All Joybubbles windows are
top-level windows. The visible portion of a child window is fully contained
within the screen.

Windows provide a way to obtain a higher-level level drawing abstraction. For
example, the window API will not provide any 2D drawing routines. To perform
2D drawing the user would use the window API to obtain a Cairo handle and then
use the Cairo API for drawing.

Windows have the physical dimensions of width and height. Windows also have
the physical dimension of position, i.e. X and Y-axis coordinates within
the screen.

4. Input Devices

Input devices represent physical devices attached to the computer through
which the user provides input. Each implementation may overload the device
abstraction to provide interfaces to new device types. At a minimum each
implementation should provide at least one of each of the following devices:

	. mouse
	. keyboard

The input abstraction handles input focus; Events will be directed the
currently focused window.

4.1 Mouse

The mouse device controls the location of the cursor and provides down and
up click events for buttons. The mouse provides the following event types:

	. motion
	. button up & down
	. enter or exit a window

4.2 Keyboard

The keyboard device provides down and up key events.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.