Fail* directories reorganized, Code-cleanup (-> coding-style), Typos+comments fixed.
git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1321 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
332
simulators/bochs/gui/nogui.cc
Normal file
332
simulators/bochs/gui/nogui.cc
Normal file
@ -0,0 +1,332 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id$
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2001-2009 The Bochs Project
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library 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
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
// Define BX_PLUGGABLE in files that can be compiled into plugins. For
|
||||
// platforms that require a special tag on exported symbols, BX_PLUGGABLE
|
||||
// is used to know when we are exporting symbols and when we are importing.
|
||||
#define BX_PLUGGABLE
|
||||
|
||||
#include "bochs.h"
|
||||
#include "param_names.h"
|
||||
|
||||
#if BX_WITH_NOGUI
|
||||
#include "icon_bochs.h"
|
||||
|
||||
class bx_nogui_gui_c : public bx_gui_c {
|
||||
public:
|
||||
bx_nogui_gui_c (void) {}
|
||||
DECLARE_GUI_VIRTUAL_METHODS()
|
||||
};
|
||||
|
||||
// declare one instance of the gui object and call macro to insert the
|
||||
// plugin code
|
||||
static bx_nogui_gui_c *theGui = NULL;
|
||||
IMPLEMENT_GUI_PLUGIN_CODE(nogui)
|
||||
|
||||
#define LOG_THIS theGui->
|
||||
|
||||
// This file defines stubs for the GUI interface, which is a
|
||||
// place to start if you want to port bochs to a platform, for
|
||||
// which there is no support for your native GUI, or if you want to compile
|
||||
// bochs without any native GUI support (no output window or
|
||||
// keyboard input will be possible).
|
||||
// Look in 'x.cc', 'beos.cc', and 'win32.cc' for specific
|
||||
// implementations of this interface. -Kevin
|
||||
|
||||
|
||||
|
||||
// ::SPECIFIC_INIT()
|
||||
//
|
||||
// Called from gui.cc, once upon program startup, to allow for the
|
||||
// specific GUI code (X11, BeOS, ...) to be initialized.
|
||||
//
|
||||
// argc, argv: these arguments can be used to initialize the GUI with
|
||||
// specific options (X11 options, BeOS options,...)
|
||||
//
|
||||
// tilewidth, tileheight: for optimization, graphics_tile_update() passes
|
||||
// only updated regions of the screen to the gui code to be redrawn.
|
||||
// These define the dimensions of a region (tile).
|
||||
// headerbar_y: A headerbar (toolbar) is display on the top of the
|
||||
// VGA window, showing floppy status, and other information. It
|
||||
// always assumes the width of the current VGA mode width, but
|
||||
// it's height is defined by this parameter.
|
||||
|
||||
void bx_nogui_gui_c::specific_init(int argc, char **argv, unsigned tilewidth, unsigned tileheight,
|
||||
unsigned headerbar_y)
|
||||
{
|
||||
put("NGUI");
|
||||
UNUSED(argc);
|
||||
UNUSED(argv);
|
||||
UNUSED(tilewidth);
|
||||
UNUSED(tileheight);
|
||||
UNUSED(headerbar_y);
|
||||
|
||||
UNUSED(bochs_icon_bits); // global variable
|
||||
|
||||
if (SIM->get_param_bool(BXPN_PRIVATE_COLORMAP)->get()) {
|
||||
BX_INFO(("private_colormap option ignored."));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ::HANDLE_EVENTS()
|
||||
//
|
||||
// Called periodically (vga_update_interval in .bochsrc) so the
|
||||
// the gui code can poll for keyboard, mouse, and other
|
||||
// relevant events.
|
||||
|
||||
void bx_nogui_gui_c::handle_events(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// ::FLUSH()
|
||||
//
|
||||
// Called periodically, requesting that the gui code flush all pending
|
||||
// screen update requests.
|
||||
|
||||
void bx_nogui_gui_c::flush(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// ::CLEAR_SCREEN()
|
||||
//
|
||||
// Called to request that the VGA region is cleared. Don't
|
||||
// clear the area that defines the headerbar.
|
||||
|
||||
void bx_nogui_gui_c::clear_screen(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ::TEXT_UPDATE()
|
||||
//
|
||||
// Called in a VGA text mode, to update the screen with
|
||||
// new content.
|
||||
//
|
||||
// old_text: array of character/attributes making up the contents
|
||||
// of the screen from the last call. See below
|
||||
// new_text: array of character/attributes making up the current
|
||||
// contents, which should now be displayed. See below
|
||||
//
|
||||
// format of old_text & new_text: each is tm_info.line_offset*text_rows
|
||||
// bytes long. Each character consists of 2 bytes. The first by is
|
||||
// the character value, the second is the attribute byte.
|
||||
//
|
||||
// cursor_x: new x location of cursor
|
||||
// cursor_y: new y location of cursor
|
||||
// tm_info: this structure contains information for additional
|
||||
// features in text mode (cursor shape, line offset,...)
|
||||
|
||||
void bx_nogui_gui_c::text_update(Bit8u *old_text, Bit8u *new_text,
|
||||
unsigned long cursor_x, unsigned long cursor_y,
|
||||
bx_vga_tminfo_t tm_info)
|
||||
{
|
||||
UNUSED(old_text);
|
||||
UNUSED(new_text);
|
||||
UNUSED(cursor_x);
|
||||
UNUSED(cursor_y);
|
||||
UNUSED(tm_info);
|
||||
}
|
||||
|
||||
|
||||
// ::GET_CLIPBOARD_TEXT()
|
||||
//
|
||||
// Called to get text from the GUI clipboard. Returns 1 if successful.
|
||||
|
||||
int bx_nogui_gui_c::get_clipboard_text(Bit8u **bytes, Bit32s *nbytes)
|
||||
{
|
||||
UNUSED(bytes);
|
||||
UNUSED(nbytes);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ::SET_CLIPBOARD_TEXT()
|
||||
//
|
||||
// Called to copy the text screen contents to the GUI clipboard.
|
||||
// Returns 1 if successful.
|
||||
|
||||
int bx_nogui_gui_c::set_clipboard_text(char *text_snapshot, Bit32u len)
|
||||
{
|
||||
UNUSED(text_snapshot);
|
||||
UNUSED(len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ::PALETTE_CHANGE()
|
||||
//
|
||||
// Allocate a color in the native GUI, for this color, and put
|
||||
// it in the colormap location 'index'.
|
||||
// returns: 0=no screen update needed (color map change has direct effect)
|
||||
// 1=screen updated needed (redraw using current colormap)
|
||||
|
||||
bx_bool bx_nogui_gui_c::palette_change(unsigned index, unsigned red, unsigned green, unsigned blue)
|
||||
{
|
||||
UNUSED(index);
|
||||
UNUSED(red);
|
||||
UNUSED(green);
|
||||
UNUSED(blue);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
// ::GRAPHICS_TILE_UPDATE()
|
||||
//
|
||||
// Called to request that a tile of graphics be drawn to the
|
||||
// screen, since info in this region has changed.
|
||||
//
|
||||
// tile: array of 8bit values representing a block of pixels with
|
||||
// dimension equal to the 'tilewidth' & 'tileheight' parameters to
|
||||
// ::specific_init(). Each value specifies an index into the
|
||||
// array of colors you allocated for ::palette_change()
|
||||
// x0: x origin of tile
|
||||
// y0: y origin of tile
|
||||
//
|
||||
// note: origin of tile and of window based on (0,0) being in the upper
|
||||
// left of the window.
|
||||
|
||||
void bx_nogui_gui_c::graphics_tile_update(Bit8u *tile, unsigned x0, unsigned y0)
|
||||
{
|
||||
UNUSED(tile);
|
||||
UNUSED(x0);
|
||||
UNUSED(y0);
|
||||
}
|
||||
|
||||
|
||||
// ::DIMENSION_UPDATE()
|
||||
//
|
||||
// Called when the VGA mode changes it's X,Y dimensions.
|
||||
// Resize the window to this size, but you need to add on
|
||||
// the height of the headerbar to the Y value.
|
||||
//
|
||||
// x: new VGA x size
|
||||
// y: new VGA y size (add headerbar_y parameter from ::specific_init().
|
||||
// fheight: new VGA character height in text mode
|
||||
// fwidth : new VGA character width in text mode
|
||||
// bpp : bits per pixel in graphics mode
|
||||
|
||||
void bx_nogui_gui_c::dimension_update(unsigned x, unsigned y, unsigned fheight, unsigned fwidth, unsigned bpp)
|
||||
{
|
||||
UNUSED(x);
|
||||
UNUSED(y);
|
||||
UNUSED(fheight);
|
||||
UNUSED(fwidth);
|
||||
UNUSED(bpp);
|
||||
}
|
||||
|
||||
|
||||
// ::CREATE_BITMAP()
|
||||
//
|
||||
// Create a monochrome bitmap of size 'xdim' by 'ydim', which will
|
||||
// be drawn in the headerbar. Return an integer ID to the bitmap,
|
||||
// with which the bitmap can be referenced later.
|
||||
//
|
||||
// bmap: packed 8 pixels-per-byte bitmap. The pixel order is:
|
||||
// bit0 is the left most pixel, bit7 is the right most pixel.
|
||||
// xdim: x dimension of bitmap
|
||||
// ydim: y dimension of bitmap
|
||||
|
||||
unsigned bx_nogui_gui_c::create_bitmap(const unsigned char *bmap, unsigned xdim, unsigned ydim)
|
||||
{
|
||||
UNUSED(bmap);
|
||||
UNUSED(xdim);
|
||||
UNUSED(ydim);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
// ::HEADERBAR_BITMAP()
|
||||
//
|
||||
// Called to install a bitmap in the bochs headerbar (toolbar).
|
||||
//
|
||||
// bmap_id: will correspond to an ID returned from
|
||||
// ::create_bitmap(). 'alignment' is either BX_GRAVITY_LEFT
|
||||
// or BX_GRAVITY_RIGHT, meaning install the bitmap in the next
|
||||
// available leftmost or rightmost space.
|
||||
// alignment: is either BX_GRAVITY_LEFT or BX_GRAVITY_RIGHT,
|
||||
// meaning install the bitmap in the next
|
||||
// available leftmost or rightmost space.
|
||||
// f: a 'C' function pointer to callback when the mouse is clicked in
|
||||
// the boundaries of this bitmap.
|
||||
|
||||
unsigned bx_nogui_gui_c::headerbar_bitmap(unsigned bmap_id, unsigned alignment, void (*f)(void))
|
||||
{
|
||||
UNUSED(bmap_id);
|
||||
UNUSED(alignment);
|
||||
UNUSED(f);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
// ::SHOW_HEADERBAR()
|
||||
//
|
||||
// Show (redraw) the current headerbar, which is composed of
|
||||
// currently installed bitmaps.
|
||||
|
||||
void bx_nogui_gui_c::show_headerbar(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// ::REPLACE_BITMAP()
|
||||
//
|
||||
// Replace the bitmap installed in the headerbar ID slot 'hbar_id',
|
||||
// with the one specified by 'bmap_id'. 'bmap_id' will have
|
||||
// been generated by ::create_bitmap(). The old and new bitmap
|
||||
// must be of the same size. This allows the bitmap the user
|
||||
// sees to change, when some action occurs. For example when
|
||||
// the user presses on the floppy icon, it then displays
|
||||
// the ejected status.
|
||||
//
|
||||
// hbar_id: headerbar slot ID
|
||||
// bmap_id: bitmap ID
|
||||
|
||||
void bx_nogui_gui_c::replace_bitmap(unsigned hbar_id, unsigned bmap_id)
|
||||
{
|
||||
UNUSED(hbar_id);
|
||||
UNUSED(bmap_id);
|
||||
}
|
||||
|
||||
|
||||
// ::EXIT()
|
||||
//
|
||||
// Called before bochs terminates, to allow for a graceful
|
||||
// exit from the native GUI mechanism.
|
||||
|
||||
void bx_nogui_gui_c::exit(void)
|
||||
{
|
||||
BX_INFO(("bx_nogui_gui_c::exit() not implemented yet."));
|
||||
}
|
||||
|
||||
|
||||
// ::MOUSE_ENABLED_CHANGED_SPECIFIC()
|
||||
//
|
||||
// Called whenever the mouse capture mode should be changed.
|
||||
|
||||
void bx_nogui_gui_c::mouse_enabled_changed_specific(bx_bool val)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* if BX_WITH_NOGUI */
|
||||
Reference in New Issue
Block a user