2005-08-24 19:08:32 +04:00
|
|
|
/*
|
2015-07-06 09:59:59 +03:00
|
|
|
* Copyright 2001-2015, Haiku.
|
2005-08-24 19:08:32 +04:00
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Authors:
|
2005-11-01 19:28:01 +03:00
|
|
|
* DarkWyrm <bpmagic@columbus.rr.com>
|
|
|
|
* Jérôme Duval, jerome.duval@free.fr
|
2006-02-05 21:14:14 +03:00
|
|
|
* Axel Dörfler, axeld@pinc-software.de
|
2008-07-10 12:29:50 +04:00
|
|
|
* Andrej Spielmann, <andrej.spielmann@seh.ox.ac.uk>
|
app_server: add new BView layers API
* Add new methods
BView::BeginLayer(uint8 opacity)
BView::EndLayer()
* All drawing between begin and end of a layer is redirected onto an
intermediate bitmap. When ending the layer, this bitmap is
composited onto the view with the opacity given when the layer was
started.
* Layers can be nested arbitrarily and will be blended onto each
other in order. There can also be any arbitrary interleaving of
layer begin/end and drawing operations.
* Internally, drawing commands are redirected into a BPicture between
BeginLayer and EndLayer (but client code need not know or care
about this). Client code can also start/end other BPictures while
inside a layer.
* Uses the PictureBoundingBoxPlayer to determine the size of the
layer bitmap before allocating and drawing into it, so it does not
allocate more memory than necessary and -- more importantly -- it
will not alpha-composite more pixels than necessary.
* Drawing mode is always set to B_OP_ALPHA, blend mode to
(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE) while inside layers. This is
necessary for (a) correct compositing output and (b) for
redirection of drawing into the intermediate bitmap, which uses the
renderer_region offset (in B_OP_COPY, the Painter does not use the
AGG renderer methods, it directly accesses the pixel data. This
would access out-of-bounds without the offset, so B_OP_COPY cannot
be allowed.)
To ensure these modes aren't changed, BView::SetDrawingMode()
and BView::SetBlendingMode() are ignored while inside a layer.
* The main motivation behind this new API is WebKit, which internally
expects such a layers functionality to be present. A performant and
reusable implementation of this functionality can only be done
server-side in app_server.
2015-07-25 16:44:23 +03:00
|
|
|
* Julian Harnath, <julian.harnath@rwth-aachen.de>
|
2005-08-24 19:08:32 +04:00
|
|
|
*/
|
2006-02-05 21:14:14 +03:00
|
|
|
#ifndef APP_SERVER_PROTOCOL_H
|
|
|
|
#define APP_SERVER_PROTOCOL_H
|
2003-06-23 06:56:42 +04:00
|
|
|
|
2005-07-05 21:30:54 +04:00
|
|
|
|
|
|
|
#include <SupportDefs.h>
|
|
|
|
|
|
|
|
|
* the new input event dispatcher is now actually used, although it doesn't
distribute any messages to the clients yet.
* removed the working thread from RootLayer - for now, its event handlers are
still called using input filters in the new event dispatcher, though (to
get things started).
* ServerApp is now using a BMessenger to identify its client, and no longer
stores the port/token separately.
* the input_server handshake is a bit simpler now, as it can now just reply
to the app_server message, removed unused code from ServerProtocol.h
* calmed down the MultiLocker (it always printed thread statistics on startup,
because it's compiled in debug mode).
* removed the cursor thread stuff from AppServer.cpp
* the new event dispatcher now uses a cursor thread when supported (only in
native mode, not in the test environment), although it improves cursor
movement under Qemu, the effect is not as good as expected - this might
need some more investigations (might just be a thread priority problem).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15012 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 14:30:06 +03:00
|
|
|
#if TEST_MODE
|
2009-08-19 18:17:13 +04:00
|
|
|
# define SERVER_INPUT_PORT "haiku-test:input port"
|
* the new input event dispatcher is now actually used, although it doesn't
distribute any messages to the clients yet.
* removed the working thread from RootLayer - for now, its event handlers are
still called using input filters in the new event dispatcher, though (to
get things started).
* ServerApp is now using a BMessenger to identify its client, and no longer
stores the port/token separately.
* the input_server handshake is a bit simpler now, as it can now just reply
to the app_server message, removed unused code from ServerProtocol.h
* calmed down the MultiLocker (it always printed thread statistics on startup,
because it's compiled in debug mode).
* removed the cursor thread stuff from AppServer.cpp
* the new event dispatcher now uses a cursor thread when supported (only in
native mode, not in the test environment), although it improves cursor
movement under Qemu, the effect is not as good as expected - this might
need some more investigations (might just be a thread priority problem).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15012 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-18 14:30:06 +03:00
|
|
|
#endif
|
2003-06-23 06:56:42 +04:00
|
|
|
|
2009-11-24 20:22:44 +03:00
|
|
|
#define AS_PROTOCOL_VERSION 1
|
|
|
|
|
2006-03-02 00:20:57 +03:00
|
|
|
#define AS_REQUEST_COLOR_KEY 0x00010000
|
2008-03-08 19:44:18 +03:00
|
|
|
// additional option for AS_VIEW_SET_VIEW_BITMAP
|
2006-03-02 00:20:57 +03:00
|
|
|
|
2005-06-08 17:24:40 +04:00
|
|
|
enum {
|
2005-11-25 17:53:34 +03:00
|
|
|
// NOTE: all defines have to start with "AS_" to let the "code_to_name"
|
|
|
|
// utility work correctly
|
|
|
|
|
2005-07-26 01:08:34 +04:00
|
|
|
AS_GET_DESKTOP,
|
2007-02-21 10:57:21 +03:00
|
|
|
AS_REGISTER_INPUT_SERVER = 1,
|
|
|
|
AS_EVENT_STREAM_CLOSED,
|
|
|
|
// Notification of event stream closing to restart input_server
|
2005-06-08 17:24:40 +04:00
|
|
|
|
2006-02-28 21:31:16 +03:00
|
|
|
// Desktop definitions (through the ServerApp, though)
|
2005-07-05 21:30:54 +04:00
|
|
|
AS_GET_WINDOW_LIST,
|
|
|
|
AS_GET_WINDOW_INFO,
|
2006-02-09 21:53:36 +03:00
|
|
|
AS_MINIMIZE_TEAM,
|
|
|
|
AS_BRING_TEAM_TO_FRONT,
|
2006-02-28 21:31:16 +03:00
|
|
|
AS_WINDOW_ACTION,
|
2008-08-12 21:39:42 +04:00
|
|
|
AS_GET_APPLICATION_ORDER,
|
|
|
|
AS_GET_WINDOW_ORDER,
|
2005-07-05 21:30:54 +04:00
|
|
|
|
2005-06-08 17:24:40 +04:00
|
|
|
// Application definitions
|
|
|
|
AS_CREATE_APP,
|
|
|
|
AS_DELETE_APP,
|
|
|
|
AS_QUIT_APP,
|
2005-07-25 01:10:33 +04:00
|
|
|
AS_ACTIVATE_APP,
|
2006-06-10 01:46:40 +04:00
|
|
|
AS_APP_CRASHED,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_CREATE_WINDOW,
|
MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 20:30:53 +04:00
|
|
|
AS_CREATE_OFFSCREEN_WINDOW,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_DELETE_WINDOW,
|
|
|
|
AS_CREATE_BITMAP,
|
|
|
|
AS_DELETE_BITMAP,
|
2006-03-02 00:20:57 +03:00
|
|
|
AS_GET_BITMAP_OVERLAY_RESTRICTIONS,
|
2008-06-03 21:45:54 +04:00
|
|
|
AS_GET_BITMAP_SUPPORT_FLAGS,
|
2012-01-22 06:12:41 +04:00
|
|
|
AS_RECONNECT_BITMAP,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
2006-02-05 21:14:14 +03:00
|
|
|
// Cursor commands
|
|
|
|
AS_SET_CURSOR,
|
2009-06-20 16:11:49 +04:00
|
|
|
AS_SET_VIEW_CURSOR,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_SHOW_CURSOR,
|
|
|
|
AS_HIDE_CURSOR,
|
|
|
|
AS_OBSCURE_CURSOR,
|
|
|
|
AS_QUERY_CURSOR_HIDDEN,
|
|
|
|
|
2006-02-05 21:14:14 +03:00
|
|
|
AS_CREATE_CURSOR,
|
2009-06-20 14:10:01 +04:00
|
|
|
AS_REFERENCE_CURSOR,
|
2006-02-05 21:14:14 +03:00
|
|
|
AS_DELETE_CURSOR,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_BEGIN_RECT_TRACKING,
|
|
|
|
AS_END_RECT_TRACKING,
|
2010-11-16 00:25:03 +03:00
|
|
|
|
2010-05-14 19:53:09 +04:00
|
|
|
AS_GET_CURSOR_POSITION,
|
2010-05-16 19:51:54 +04:00
|
|
|
AS_GET_CURSOR_BITMAP,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
// Window definitions
|
2012-08-14 09:03:35 +04:00
|
|
|
AS_SHOW_OR_HIDE_WINDOW,
|
|
|
|
AS_INTERNAL_HIDE_WINDOW,
|
2006-02-09 21:28:29 +03:00
|
|
|
AS_MINIMIZE_WINDOW,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_QUIT_WINDOW,
|
|
|
|
AS_SEND_BEHIND,
|
|
|
|
AS_SET_LOOK,
|
2008-08-12 21:39:42 +04:00
|
|
|
AS_SET_FEEL,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_SET_FLAGS,
|
|
|
|
AS_DISABLE_UPDATES,
|
|
|
|
AS_ENABLE_UPDATES,
|
|
|
|
AS_BEGIN_UPDATE,
|
|
|
|
AS_END_UPDATE,
|
|
|
|
AS_NEEDS_UPDATE,
|
2005-07-05 23:20:19 +04:00
|
|
|
AS_SET_WINDOW_TITLE,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_ADD_TO_SUBSET,
|
2005-12-02 19:07:02 +03:00
|
|
|
AS_REMOVE_FROM_SUBSET,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_SET_ALIGNMENT,
|
|
|
|
AS_GET_ALIGNMENT,
|
|
|
|
AS_GET_WORKSPACES,
|
|
|
|
AS_SET_WORKSPACES,
|
|
|
|
AS_WINDOW_RESIZE,
|
|
|
|
AS_WINDOW_MOVE,
|
|
|
|
AS_SET_SIZE_LIMITS,
|
|
|
|
AS_ACTIVATE_WINDOW,
|
2007-01-06 20:08:19 +03:00
|
|
|
AS_IS_FRONT_WINDOW,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
// BPicture definitions
|
|
|
|
AS_CREATE_PICTURE,
|
|
|
|
AS_DELETE_PICTURE,
|
|
|
|
AS_CLONE_PICTURE,
|
|
|
|
AS_DOWNLOAD_PICTURE,
|
|
|
|
|
|
|
|
// Font-related server communications
|
2005-06-09 20:11:15 +04:00
|
|
|
AS_SET_SYSTEM_FONT,
|
2005-11-07 14:02:39 +03:00
|
|
|
AS_GET_SYSTEM_FONTS,
|
2005-11-09 21:34:48 +03:00
|
|
|
AS_GET_SYSTEM_DEFAULT_FONT,
|
2008-11-17 00:59:05 +03:00
|
|
|
AS_SYSTEM_FONT_CHANGED,
|
2005-11-07 14:02:39 +03:00
|
|
|
|
2005-11-07 19:19:40 +03:00
|
|
|
AS_GET_FONT_LIST_REVISION,
|
|
|
|
AS_GET_FAMILY_AND_STYLES,
|
2005-11-07 14:02:39 +03:00
|
|
|
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_GET_FAMILY_AND_STYLE,
|
2005-11-07 14:02:39 +03:00
|
|
|
AS_GET_FAMILY_AND_STYLE_IDS,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_GET_FONT_BOUNDING_BOX,
|
|
|
|
AS_GET_TUNED_COUNT,
|
|
|
|
AS_GET_TUNED_INFO,
|
|
|
|
AS_GET_FONT_HEIGHT,
|
2005-11-01 21:21:04 +03:00
|
|
|
AS_GET_FONT_FILE_FORMAT,
|
2005-11-07 14:02:39 +03:00
|
|
|
AS_GET_EXTRA_FONT_FLAGS,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_GET_STRING_WIDTHS,
|
|
|
|
AS_GET_EDGES,
|
|
|
|
AS_GET_ESCAPEMENTS,
|
|
|
|
AS_GET_ESCAPEMENTS_AS_FLOATS,
|
|
|
|
AS_GET_BOUNDINGBOXES_CHARS,
|
2007-08-02 23:10:38 +04:00
|
|
|
AS_GET_BOUNDINGBOXES_STRING,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_GET_BOUNDINGBOXES_STRINGS,
|
|
|
|
AS_GET_HAS_GLYPHS,
|
|
|
|
AS_GET_GLYPH_SHAPES,
|
|
|
|
AS_GET_TRUNCATED_STRINGS,
|
|
|
|
|
|
|
|
// Screen methods
|
2005-11-14 17:36:12 +03:00
|
|
|
AS_VALID_SCREEN_ID,
|
|
|
|
AS_GET_NEXT_SCREEN_ID,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_SCREEN_GET_MODE,
|
|
|
|
AS_SCREEN_SET_MODE,
|
2005-06-24 22:02:01 +04:00
|
|
|
AS_PROPOSE_MODE,
|
2005-06-18 10:36:23 +04:00
|
|
|
AS_GET_MODE_LIST,
|
2009-08-21 14:23:01 +04:00
|
|
|
AS_GET_SCREEN_FRAME,
|
2005-11-14 15:08:21 +03:00
|
|
|
|
2005-06-25 10:30:09 +04:00
|
|
|
AS_GET_PIXEL_CLOCK_LIMITS,
|
|
|
|
AS_GET_TIMING_CONSTRAINTS,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
2005-06-25 10:30:09 +04:00
|
|
|
AS_SCREEN_GET_COLORMAP,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_GET_DESKTOP_COLOR,
|
|
|
|
AS_SET_DESKTOP_COLOR,
|
2005-11-14 15:08:21 +03:00
|
|
|
AS_GET_SCREEN_ID_FROM_WINDOW,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
2005-07-14 02:33:52 +04:00
|
|
|
AS_READ_BITMAP,
|
2005-11-14 15:08:21 +03:00
|
|
|
|
2005-06-18 10:36:23 +04:00
|
|
|
AS_GET_RETRACE_SEMAPHORE,
|
2005-06-24 22:02:01 +04:00
|
|
|
AS_GET_ACCELERANT_INFO,
|
2007-10-15 15:41:47 +04:00
|
|
|
AS_GET_MONITOR_INFO,
|
2005-11-14 17:36:12 +03:00
|
|
|
AS_GET_FRAME_BUFFER_CONFIG,
|
2008-08-12 21:39:42 +04:00
|
|
|
|
2005-06-25 17:53:48 +04:00
|
|
|
AS_SET_DPMS,
|
|
|
|
AS_GET_DPMS_STATE,
|
|
|
|
AS_GET_DPMS_CAPABILITIES,
|
2005-11-14 15:08:21 +03:00
|
|
|
|
2005-12-20 17:31:26 +03:00
|
|
|
// Misc stuff
|
2005-12-25 13:43:24 +03:00
|
|
|
AS_GET_ACCELERANT_PATH,
|
|
|
|
AS_GET_DRIVER_PATH,
|
2005-12-20 17:31:26 +03:00
|
|
|
|
2005-06-08 17:24:40 +04:00
|
|
|
// Global function call defs
|
|
|
|
AS_SET_UI_COLORS,
|
2006-04-26 13:33:08 +04:00
|
|
|
AS_SET_UI_COLOR,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_SET_DECORATOR,
|
|
|
|
AS_GET_DECORATOR,
|
|
|
|
AS_R5_SET_DECORATOR,
|
2005-06-16 04:58:12 +04:00
|
|
|
AS_COUNT_DECORATORS,
|
|
|
|
AS_GET_DECORATOR_NAME,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_COUNT_WORKSPACES,
|
|
|
|
AS_CURRENT_WORKSPACE,
|
|
|
|
AS_ACTIVATE_WORKSPACE,
|
2009-07-30 04:52:21 +04:00
|
|
|
AS_SET_WORKSPACE_LAYOUT,
|
2009-07-27 21:22:11 +04:00
|
|
|
AS_GET_WORKSPACE_LAYOUT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_GET_SCROLLBAR_INFO,
|
|
|
|
AS_SET_SCROLLBAR_INFO,
|
2005-07-17 20:25:48 +04:00
|
|
|
AS_GET_MENU_INFO,
|
|
|
|
AS_SET_MENU_INFO,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_IDLE_TIME,
|
|
|
|
AS_SET_MOUSE_MODE,
|
|
|
|
AS_GET_MOUSE_MODE,
|
2009-10-23 01:10:19 +04:00
|
|
|
AS_SET_FOCUS_FOLLOWS_MOUSE_MODE,
|
|
|
|
AS_GET_FOCUS_FOLLOWS_MOUSE_MODE,
|
|
|
|
AS_SET_ACCEPT_FIRST_CLICK,
|
|
|
|
AS_GET_ACCEPT_FIRST_CLICK,
|
2005-11-23 18:17:58 +03:00
|
|
|
AS_GET_MOUSE,
|
2006-05-25 16:01:28 +04:00
|
|
|
AS_SET_DECORATOR_SETTINGS,
|
|
|
|
AS_GET_DECORATOR_SETTINGS,
|
2007-02-21 10:57:21 +03:00
|
|
|
AS_GET_SHOW_ALL_DRAGGERS,
|
|
|
|
AS_SET_SHOW_ALL_DRAGGERS,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
2008-08-03 17:40:41 +04:00
|
|
|
// Subpixel antialiasing & hinting
|
|
|
|
AS_SET_SUBPIXEL_ANTIALIASING,
|
|
|
|
AS_GET_SUBPIXEL_ANTIALIASING,
|
2008-07-10 12:29:50 +04:00
|
|
|
AS_SET_HINTING,
|
|
|
|
AS_GET_HINTING,
|
2008-08-03 17:40:41 +04:00
|
|
|
AS_SET_SUBPIXEL_AVERAGE_WEIGHT,
|
|
|
|
AS_GET_SUBPIXEL_AVERAGE_WEIGHT,
|
|
|
|
AS_SET_SUBPIXEL_ORDERING,
|
|
|
|
AS_GET_SUBPIXEL_ORDERING,
|
2008-07-10 12:29:50 +04:00
|
|
|
|
2005-06-08 17:24:40 +04:00
|
|
|
// Graphics calls
|
|
|
|
AS_SET_HIGH_COLOR,
|
|
|
|
AS_SET_LOW_COLOR,
|
|
|
|
AS_SET_VIEW_COLOR,
|
|
|
|
|
|
|
|
AS_STROKE_ARC,
|
|
|
|
AS_STROKE_BEZIER,
|
|
|
|
AS_STROKE_ELLIPSE,
|
|
|
|
AS_STROKE_LINE,
|
|
|
|
AS_STROKE_LINEARRAY,
|
|
|
|
AS_STROKE_POLYGON,
|
|
|
|
AS_STROKE_RECT,
|
|
|
|
AS_STROKE_ROUNDRECT,
|
|
|
|
AS_STROKE_SHAPE,
|
|
|
|
AS_STROKE_TRIANGLE,
|
|
|
|
|
|
|
|
AS_FILL_ARC,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_ARC_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_BEZIER,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_BEZIER_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_ELLIPSE,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_ELLIPSE_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_POLYGON,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_POLYGON_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_RECT,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_RECT_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_REGION,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_REGION_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_ROUNDRECT,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_ROUNDRECT_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_SHAPE,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_SHAPE_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
AS_FILL_TRIANGLE,
|
2008-10-15 01:27:42 +04:00
|
|
|
AS_FILL_TRIANGLE_GRADIENT,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_DRAW_STRING,
|
2007-08-04 15:22:47 +04:00
|
|
|
AS_DRAW_STRING_WITH_DELTA,
|
2010-03-15 16:59:14 +03:00
|
|
|
AS_DRAW_STRING_WITH_OFFSETS,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
AS_SYNC,
|
|
|
|
|
2008-03-08 19:44:18 +03:00
|
|
|
AS_VIEW_CREATE,
|
|
|
|
AS_VIEW_DELETE,
|
|
|
|
AS_VIEW_CREATE_ROOT,
|
|
|
|
AS_VIEW_SHOW,
|
|
|
|
AS_VIEW_HIDE,
|
|
|
|
AS_VIEW_MOVE,
|
|
|
|
AS_VIEW_RESIZE,
|
|
|
|
AS_VIEW_DRAW,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
|
|
|
// View/Layer definitions
|
2008-03-08 19:44:18 +03:00
|
|
|
AS_VIEW_GET_COORD,
|
|
|
|
AS_VIEW_SET_FLAGS,
|
|
|
|
AS_VIEW_SET_ORIGIN,
|
|
|
|
AS_VIEW_GET_ORIGIN,
|
|
|
|
AS_VIEW_RESIZE_MODE,
|
|
|
|
AS_VIEW_BEGIN_RECT_TRACK,
|
|
|
|
AS_VIEW_END_RECT_TRACK,
|
|
|
|
AS_VIEW_DRAG_RECT,
|
|
|
|
AS_VIEW_DRAG_IMAGE,
|
|
|
|
AS_VIEW_SCROLL,
|
|
|
|
AS_VIEW_SET_LINE_MODE,
|
|
|
|
AS_VIEW_GET_LINE_MODE,
|
|
|
|
AS_VIEW_PUSH_STATE,
|
|
|
|
AS_VIEW_POP_STATE,
|
|
|
|
AS_VIEW_SET_SCALE,
|
|
|
|
AS_VIEW_GET_SCALE,
|
|
|
|
AS_VIEW_SET_DRAWING_MODE,
|
|
|
|
AS_VIEW_GET_DRAWING_MODE,
|
|
|
|
AS_VIEW_SET_BLENDING_MODE,
|
|
|
|
AS_VIEW_GET_BLENDING_MODE,
|
|
|
|
AS_VIEW_SET_PEN_LOC,
|
|
|
|
AS_VIEW_GET_PEN_LOC,
|
|
|
|
AS_VIEW_SET_PEN_SIZE,
|
|
|
|
AS_VIEW_GET_PEN_SIZE,
|
|
|
|
AS_VIEW_SET_HIGH_COLOR,
|
|
|
|
AS_VIEW_SET_LOW_COLOR,
|
|
|
|
AS_VIEW_SET_VIEW_COLOR,
|
|
|
|
AS_VIEW_GET_HIGH_COLOR,
|
|
|
|
AS_VIEW_GET_LOW_COLOR,
|
|
|
|
AS_VIEW_GET_VIEW_COLOR,
|
|
|
|
AS_VIEW_PRINT_ALIASING,
|
|
|
|
AS_VIEW_CLIP_TO_PICTURE,
|
|
|
|
AS_VIEW_GET_CLIP_REGION,
|
|
|
|
AS_VIEW_DRAW_BITMAP,
|
|
|
|
AS_VIEW_SET_EVENT_MASK,
|
|
|
|
AS_VIEW_SET_MOUSE_EVENT_MASK,
|
|
|
|
|
|
|
|
AS_VIEW_DRAW_STRING,
|
|
|
|
AS_VIEW_SET_CLIP_REGION,
|
|
|
|
AS_VIEW_LINE_ARRAY,
|
|
|
|
AS_VIEW_BEGIN_PICTURE,
|
|
|
|
AS_VIEW_APPEND_TO_PICTURE,
|
|
|
|
AS_VIEW_END_PICTURE,
|
|
|
|
AS_VIEW_COPY_BITS,
|
|
|
|
AS_VIEW_DRAW_PICTURE,
|
|
|
|
AS_VIEW_INVALIDATE_RECT,
|
|
|
|
AS_VIEW_INVALIDATE_REGION,
|
|
|
|
AS_VIEW_INVERT_RECT,
|
|
|
|
AS_VIEW_MOVE_TO,
|
|
|
|
AS_VIEW_RESIZE_TO,
|
|
|
|
AS_VIEW_SET_STATE,
|
|
|
|
AS_VIEW_SET_FONT_STATE,
|
|
|
|
AS_VIEW_GET_STATE,
|
|
|
|
AS_VIEW_SET_VIEW_BITMAP,
|
|
|
|
AS_VIEW_SET_PATTERN,
|
|
|
|
AS_SET_CURRENT_VIEW,
|
app_server: add new BView layers API
* Add new methods
BView::BeginLayer(uint8 opacity)
BView::EndLayer()
* All drawing between begin and end of a layer is redirected onto an
intermediate bitmap. When ending the layer, this bitmap is
composited onto the view with the opacity given when the layer was
started.
* Layers can be nested arbitrarily and will be blended onto each
other in order. There can also be any arbitrary interleaving of
layer begin/end and drawing operations.
* Internally, drawing commands are redirected into a BPicture between
BeginLayer and EndLayer (but client code need not know or care
about this). Client code can also start/end other BPictures while
inside a layer.
* Uses the PictureBoundingBoxPlayer to determine the size of the
layer bitmap before allocating and drawing into it, so it does not
allocate more memory than necessary and -- more importantly -- it
will not alpha-composite more pixels than necessary.
* Drawing mode is always set to B_OP_ALPHA, blend mode to
(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE) while inside layers. This is
necessary for (a) correct compositing output and (b) for
redirection of drawing into the intermediate bitmap, which uses the
renderer_region offset (in B_OP_COPY, the Painter does not use the
AGG renderer methods, it directly accesses the pixel data. This
would access out-of-bounds without the offset, so B_OP_COPY cannot
be allowed.)
To ensure these modes aren't changed, BView::SetDrawingMode()
and BView::SetBlendingMode() are ignored while inside a layer.
* The main motivation behind this new API is WebKit, which internally
expects such a layers functionality to be present. A performant and
reusable implementation of this functionality can only be done
server-side in app_server.
2015-07-25 16:44:23 +03:00
|
|
|
AS_VIEW_BEGIN_LAYER,
|
|
|
|
AS_VIEW_END_LAYER,
|
2005-06-08 17:24:40 +04:00
|
|
|
|
2009-08-27 16:10:59 +04:00
|
|
|
// BDirectWindow/BWindowScreen codes
|
2005-12-10 18:23:02 +03:00
|
|
|
AS_DIRECT_WINDOW_GET_SYNC_DATA,
|
|
|
|
AS_DIRECT_WINDOW_SET_FULLSCREEN,
|
2009-08-27 16:10:59 +04:00
|
|
|
AS_DIRECT_SCREEN_LOCK,
|
2005-11-25 17:53:34 +03:00
|
|
|
|
2010-08-17 10:25:55 +04:00
|
|
|
// desktop listener communications
|
|
|
|
AS_TALK_TO_DESKTOP_LISTENER,
|
|
|
|
|
2010-11-16 00:25:03 +03:00
|
|
|
// debugging helper
|
|
|
|
AS_DUMP_ALLOCATOR,
|
2010-11-24 00:50:12 +03:00
|
|
|
AS_DUMP_BITMAPS,
|
2010-11-16 00:25:03 +03:00
|
|
|
|
2014-02-05 01:46:55 +04:00
|
|
|
// transformation in addition to origin/scale
|
|
|
|
AS_VIEW_SET_TRANSFORM,
|
|
|
|
AS_VIEW_GET_TRANSFORM,
|
|
|
|
|
2014-03-11 20:23:32 +04:00
|
|
|
// Polygon filling rules
|
|
|
|
AS_VIEW_SET_FILL_RULE,
|
|
|
|
AS_VIEW_GET_FILL_RULE,
|
|
|
|
|
2005-11-25 17:53:34 +03:00
|
|
|
AS_LAST_CODE
|
2003-06-23 06:56:42 +04:00
|
|
|
};
|
|
|
|
|
2012-04-29 22:21:40 +04:00
|
|
|
// TODO: move this into a private app header, together with the rest of the
|
|
|
|
// private message definitions in AppDefs.h
|
|
|
|
enum {
|
|
|
|
kMsgDeleteServerMemoryArea = '_DSA',
|
|
|
|
};
|
|
|
|
|
2006-04-22 20:41:12 +04:00
|
|
|
// bitmap allocation flags
|
* Implemented a new client allocation method: instead of having all bitmaps of
all teams in serveral server areas, and instead of having to eventually clone
them all several times in BBitmap, we now have one or more areas per team,
and BBitmap will only clone areas once if needed. As a side effect, this
method should be magnitudes faster than the previous version.
* This method is also much more secure: instead of putting the allocation
maintenance structures into those everyone-read-write areas, they are now
separated, so that faulty applications cannot crash the app_server this
way anymore. This should fix bug #172.
* Freeing memory is not yet implemented though! (although all memory will
be freed upon app exit)
* There are now 3 different bitmap allocation strategies: per ClientMemoryAllocator
(ie. via ServerApp), per area (for overlays, not yet implemented), and using
malloc()/free() for server-only bitmaps.
* ServerBitmap now deletes its buffers itself.
* Cleaned up BBitmap and BApplication a bit.
* The test environment currently doesn't build anymore, will fix it next.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 16:43:26 +03:00
|
|
|
enum {
|
2006-04-22 20:41:12 +04:00
|
|
|
kAllocator = 0x1,
|
|
|
|
kFramebuffer = 0x2,
|
|
|
|
kHeap = 0x4,
|
|
|
|
kNewAllocatorArea = 0x8,
|
* Implemented a new client allocation method: instead of having all bitmaps of
all teams in serveral server areas, and instead of having to eventually clone
them all several times in BBitmap, we now have one or more areas per team,
and BBitmap will only clone areas once if needed. As a side effect, this
method should be magnitudes faster than the previous version.
* This method is also much more secure: instead of putting the allocation
maintenance structures into those everyone-read-write areas, they are now
separated, so that faulty applications cannot crash the app_server this
way anymore. This should fix bug #172.
* Freeing memory is not yet implemented though! (although all memory will
be freed upon app exit)
* There are now 3 different bitmap allocation strategies: per ClientMemoryAllocator
(ie. via ServerApp), per area (for overlays, not yet implemented), and using
malloc()/free() for server-only bitmaps.
* ServerBitmap now deletes its buffers itself.
* Cleaned up BBitmap and BApplication a bit.
* The test environment currently doesn't build anymore, will fix it next.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 16:43:26 +03:00
|
|
|
};
|
|
|
|
|
2006-02-05 21:14:14 +03:00
|
|
|
#endif // APP_SERVER_PROTOCOL_H
|