# # Copyright (c) 1997-2002 The Protein Laboratory, University of Copenhagen # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $Id: Drawable.cls,v 1.37 2005/03/30 19:33:43 dk Exp $ use Types; object Prima::Drawable ( Prima::Component) { Font font; int w; int h; PRGBColor palette; # logical palette int palSize; # logical palette size int splinePrecision; int splinePrecision_saved; property Color backColor; property Color color; property Rect clipRect; property Bool fillWinding; property SV * fillPattern; property int height; property int lineEnd; property int lineJoin; property SV * linePattern; property int lineWidth; property SV * palette; property SV * pixel( int x, int y); property Handle region; property Point resolution; property int rop; property int rop2; property Point size; property int splinePrecision; property Bool textOpaque; property Bool textOutBaseline; property Point translate; property int width; # globals method void init( HV * profile); method void done(); method void cleanup(); method Bool begin_paint(); method Bool begin_paint_info(); method void end_paint(); method void end_paint_info(); static Font* font_match( char * dummy, Font * source, Font * dest, Bool pick = true); c_only Bool font_add( Font * source, Font * dest); import SV * profile_default(); method void set( HV * profile); method void set_font( Font font); method int get_bpp(); method Font get_font(); method SV * get_font_abc( int first = -1, int last = -1, Bool unicode = 0); method SV * get_font_ranges(); method SV * get_handle(); method Color get_nearest_color( Color color); method int get_paint_state(); method SV * get_physical_palette(); method int get_text_width( SV * text, Bool addOverhang = 0); method SV * get_text_box( SV * text); static SV * render_spline( SV * obj, SV * points, int precision = -1); # operators method Bool arc( int x, int y, int dX, int dY, double startAngle, double endAngle) => apc_gp_arc; method Bool bar(int x1, int y1, int x2, int y2) => apc_gp_bar; method Bool chord( int x, int y, int dX, int dY, double startAngle, double endAngle) => apc_gp_chord; method Bool clear(int x1=-1, int y1=-1, int x2=-1, int y2=-1) => apc_gp_clear; method Bool ellipse(int x, int y, int dX, int dY) => apc_gp_ellipse; method Bool fill_chord( int x, int y, int dX, int dY, double startAngle, double endAngle) => apc_gp_fill_chord; method Bool fill_ellipse(int x, int y, int dX, int dY) => apc_gp_fill_ellipse; method Bool fillpoly( SV * points); method Bool fill_sector( int x, int y, int dX, int dY, double startAngle, double endAngle) => apc_gp_fill_sector; method Bool fill_spline( SV * points); method Bool flood_fill( int x, int y, Color color, Bool singleBorder = 1) => apc_gp_flood_fill; method Bool line(int x1, int y1, int x2, int y2) => apc_gp_line; method Bool lines( SV * points); method Bool polyline( SV * points); method Bool put_image_indirect( Handle image, int x, int y, int xFrom, int yFrom, int xDestLen, int yDestLen, int xLen, int yLen, int rop); method Bool rectangle(int x1, int y1, int x2, int y2) => apc_gp_rectangle; method Bool sector( int x, int y, int dX, int dY, double startAngle, double endAngle) => apc_gp_sector; method Bool spline( SV * points); method Bool text_out( SV * text, int x, int y); method SV* text_wrap( SV * text, int width, int options = twDefault, int tabIndent = 8); # font_abc caches PFontABC font_abc_ascii; PList font_abc_unicode; }