aboutsummaryrefslogtreecommitdiffstats
path: root/framebuffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'framebuffer.h')
-rw-r--r--framebuffer.h205
1 files changed, 0 insertions, 205 deletions
diff --git a/framebuffer.h b/framebuffer.h
deleted file mode 100644
index 1dce0d9..0000000
--- a/framebuffer.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/* Copyright (C) 2007-2008 The Android Open Source Project
-**
-** This software is licensed under the terms of the GNU General Public
-** License version 2, as published by the Free Software Foundation, and
-** may be copied, distributed, and modified under those terms.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-** GNU General Public License for more details.
-*/
-#ifndef _QEMU_FRAMEBUFFER_H_
-#define _QEMU_FRAMEBUFFER_H_
-
-/* A simple abstract interface to framebuffer displays. this is used to
- * de-couple hardware emulation from final display.
- *
- * Each QFrameBuffer object holds a pixel buffer that is shared between
- * one 'Producer' and one or more 'Clients'
- *
- * The Producer is in charge of updating the pixel buffer from the state
- * of the emulated VRAM. A Client listens to updates to the pixel buffer,
- * sent from the producer through qframebuffer_update()/_rotate() and
- * displays them.
- *
- * note the 'rotation' field: it can take values 0, 1, 2 or 3 and corresponds
- * to a rotation that must be performed to the pixels stored in the framebuffer
- * *before* displaying them a value of 1 corresponds to a rotation of
- * 90 clockwise-degrees, when the framebuffer is rotated 90 or 270 degrees,
- * its width/height are swapped automatically
- *
- * phys_width_mm and phys_height_mm are physical dimensions expressed
- * in millimeters
- *
- * More about the client/producer relationships below.
- */
-typedef struct QFrameBuffer QFrameBuffer;
-
-
-typedef enum {
- QFRAME_BUFFER_NONE = 0,
- QFRAME_BUFFER_RGB565 = 1,
- QFRAME_BUFFER_MAX /* do not remove */
-} QFrameBufferFormat;
-
-struct QFrameBuffer {
- int width; /* width in pixels */
- int height; /* height in pixels */
- int pitch; /* bytes per line */
- int rotation; /* rotation to be applied when displaying */
- QFrameBufferFormat format;
- void* pixels; /* pixel buffer */
-
- int phys_width_mm;
- int phys_height_mm;
-
- /* extra data that is handled by the framebuffer implementation */
- void* extra;
-
-};
-
-/* the default dpi resolution of a typical framebuffer. this is an average
- * between various prototypes being used during the development of the
- * Android system...
- */
-#define DEFAULT_FRAMEBUFFER_DPI 165
-
-
-/* initialize a framebuffer object and allocate its pixel buffer */
-/* this computes phys_width_mm and phys_height_mm assuming a 165 dpi screen */
-/* returns -1 in case of error, 0 otherwise */
-extern int
-qframebuffer_init( QFrameBuffer* qfbuff,
- int width,
- int height,
- int rotation,
- QFrameBufferFormat format );
-
-/* recompute phys_width_mm and phys_height_mm according to the emulated
- * screen DPI settings */
-extern void
-qframebuffer_set_dpi( QFrameBuffer* qfbuff,
- int x_dpi,
- int y_dpi );
-
-/* alternative to qframebuffer_set_dpi where one can set the physical
- * dimensions directly in millimeters. for the record 1 inch = 25.4 mm */
-extern void
-qframebuffer_set_mm( QFrameBuffer* qfbuff,
- int width_mm,
- int height_mm );
-
-/* the Client::Update method is called to instruct a client that a given
- * rectangle of the framebuffer pixels was updated and needs to be
- * redrawn.
- */
-typedef void (*QFrameBufferUpdateFunc)( void* opaque, int x, int y,
- int w, int h );
-
-/* the Client::Rotate method is called to instruct the client that a
- * framebuffer's internal rotation has changed. This is the rotation
- * that must be applied before displaying the pixels.
- *
- * Note that it is assumed that all framebuffer pixels have changed too
- * so the client should call its Update method as well.
- */
-typedef void (*QFrameBufferRotateFunc)( void* opaque, int rotation );
-
-/* the Client::Done func tells a client that a framebuffer object was freed.
- * no more reference to its pixels should be done.
- */
-typedef void (*QFrameBufferDoneFunc) ( void* opaque );
-
-/* add one client to a given framebuffer.
- * the current implementation only allows one client per frame-buffer,
- * but we could allow more for various reasons (e.g. displaying the
- * framebuffer + dispatching it through VNC at the same time)
- */
-extern void
-qframebuffer_add_client( QFrameBuffer* qfbuff,
- void* fb_opaque,
- QFrameBufferUpdateFunc fb_update,
- QFrameBufferRotateFunc fb_rotate,
- QFrameBufferDoneFunc fb_done );
-
-/* Producer::CheckUpdate is called to let the producer check the
- * VRAM state (e.g. VRAM dirty pages) to see if anything changed since the
- * last call to the method. When true, the method should call either
- * qframebuffer_update() or qframebuffer_rotate() with the appropriate values.
- */
-typedef void (*QFrameBufferCheckUpdateFunc)( void* opaque );
-
-/* Producer::Invalidate tells the producer that the next call to
- * CheckUpdate should act as if the whole content of VRAM had changed.
- * this is normally done to force client initialization/refreshes.
- */
-typedef void (*QFrameBufferInvalidateFunc) ( void* opaque );
-
-/* the Producer::Detach method is used to tell the producer that the
- * underlying QFrameBuffer object is about to be de-allocated.
- */
-typedef void (*QFrameBufferDetachFunc) ( void* opaque );
-
-/* set the producer of a given framebuffer */
-extern void
-qframebuffer_set_producer( QFrameBuffer* qfbuff,
- void* opaque,
- QFrameBufferCheckUpdateFunc fb_check,
- QFrameBufferInvalidateFunc fb_invalidate,
- QFrameBufferDetachFunc fb_detach );
-
-/* tell a client that a rectangle region has been updated in the framebuffer
- * pixel buffer this is typically called from a Producer::CheckUpdate method
- */
-extern void
-qframebuffer_update( QFrameBuffer* qfbuff, int x, int y, int w, int h );
-
-/* rotate the framebuffer (may swap width/height), and tell all clients.
- * Should be called from a Producer::CheckUpdate method
- */
-extern void
-qframebuffer_rotate( QFrameBuffer* qfbuff, int rotation );
-
-/* finalize a framebuffer, release its pixel buffer. Should be called
- * from the framebuffer object's owner
- */
-extern void
-qframebuffer_done( QFrameBuffer* qfbuff );
-
-
-/* this is called repeatedly by the emulator. for each registered framebuffer,
- * call its producer's CheckUpdate method, if any.
- */
-extern void
-qframebuffer_check_updates( void );
-
-/* this is called by the emulator. for each registered framebuffer, call
- * its producer's Invalidate method, if any
- */
-extern void
-qframebuffer_invalidate_all( void );
-
-/*
- * to completely separate the implementation of clients, producers, and skins,
- * we use a simple global FIFO list of QFrameBuffer objects.
- *
- * qframebuffer_fifo_add() is typically called by the emulator initialization
- * depending on the emulated device's configuration
- *
- * qframebuffer_fifo_get() is typically called by a hardware framebuffer
- * emulation.
- */
-
-/* add a new constructed frame buffer object to our global list */
-extern void
-qframebuffer_fifo_add( QFrameBuffer* qfbuff );
-
-/* retrieve a frame buffer object from the global FIFO list */
-extern QFrameBuffer*
-qframebuffer_fifo_get( void );
-
-/* */
-
-#endif /* _QEMU_FRAMEBUFFER_H_ */
-