From 74336ca78b2b6bd42b50cce21bd1fe71f98cc56a Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Fri, 2 Feb 2024 11:18:01 +1300 Subject: First pass at draw functions --- doc/fl_draw.html | 1227 ++++++++++++++++++++++++++++++++ doc/index.html | 5 +- progress.txt | 1 + src/c_fl_draw.cpp | 410 +++++++++++ src/c_fl_draw.h | 125 ++++ src/fltk-draw.adb | 1631 +++++++++++++++++++++++++++++++++++++++++++ src/fltk-draw.ads | 504 +++++++++++++ src/fltk-widgets-charts.adb | 6 +- src/fltk-widgets-charts.ads | 6 +- src/fltk.ads | 47 +- 10 files changed, 3949 insertions(+), 13 deletions(-) create mode 100644 doc/fl_draw.html create mode 100644 src/c_fl_draw.cpp create mode 100644 src/c_fl_draw.h create mode 100644 src/fltk-draw.adb create mode 100644 src/fltk-draw.ads diff --git a/doc/fl_draw.html b/doc/fl_draw.html new file mode 100644 index 0000000..fbdb197 --- /dev/null +++ b/doc/fl_draw.html @@ -0,0 +1,1227 @@ + + + + + + + Fl_Draw Binding Map + + + + + + +

Fl_Draw Binding Map

+ + + + + + + + + + +
Package name
Fl_DrawFLTK.Draw
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Types
Fl_LineLine_Kind
 Cap_Kind
 Join_Kind
 Dash_Length
 Dash_Gap
 Dash_Gap_Array
 Text_Draw_Function
 Symbol_Draw_Function
 Area_Draw_Function
 Draw_Error
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functions and Procedures
+int fl_add_symbol(const char *name, void(*drawit)(Fl_Color), int scalable);
+
+procedure Add_Symbol
+       (Text     : in String;
+        Func     : in Symbol_Drawing_Function;
+        Scalable : in Boolean);
+
+void fl_arc(double x, double y, double r, double start, double end);
+
+procedure Arc
+       (X, Y, R, Start, Finish : in Long_Float);
+
+void fl_arc(int x, int y, int w, int h, double a1, double a2);
+
+procedure Arc
+       (X, Y, W, H    : in Integer;
+        Start, Finish : in Long_Float);
+
+void fl_begin_complex_polygon();
+
+procedure Begin_Complex_Polygon;
+
+void fl_begin_line();
+
+procedure Begin_Line;
+
+void fl_begin_loop();
+
+procedure Begin_Loop;
+
+void fl_begin_points();
+
+procedure Begin_Points;
+
+void fl_begin_polygon();
+
+procedure Begin_Polygon;
+
+char fl_can_do_alpha_blending();
+
+function Can_Do_Alpha_Blending
+    return Boolean;
+
+void fl_chord(int x, int y, int w, int h, double a1, double a2);
+
+procedure Chord
+       (X, Y, W, H     : in Integer;
+        Angle1, Angle2 : in Long_Float);
+
+void fl_circle(double x, double y, double r);
+
+procedure Circle
+       (X, Y, R : in Long_Float);
+
+int fl_clip_box(int x, int y, int w, int h,
+    int &X, int &Y, int &W, int &H);
+
+function Clip_Box
+       (X, Y, W, H     : in     Integer;
+        BX, BY, BW, BH :    out Integer)
+    return Boolean;
+
+Fl_Region fl_clip_region();
+
+
+
+void fl_clip_region(Fl_Region r);
+
+
+
+Fl_Color fl_color();
+
+function Get_Color
+    return Color;
+
+void fl_color(Fl_Color c);
+
+procedure Set_Color
+       (To : in Color);
+
+void fl_color(int c);
+
Not applicable; original is deprecated.
+void fl_color(uchar r, uchar g, uchar b);
+
+procedure Set_Color
+       (R, G, B : in Color_Component);
+
+void fl_cursor(Fl_Cursor);
+
+void fl_cursor(Fl_Cursor, Fl_Color fg, Fl_Color bg=FL_WHITE);
+
+
+
+void fl_curve(double X0, double Y0, double X1, double Y1,
+    double X2, double Y2, double X3, double Y3);
+
+procedure Curve
+       (X0, Y0 : in Long_Float;
+        X1, Y1 : in Long_Float;
+        X2, Y2 : in Long_Float;
+        X3, Y3 : in Long_Float);
+
+int fl_descent();
+
+function Font_Descent
+    return Integer;
+
+void fl_draw(const char *str, int n, int x, int y);
+
+void fl_draw(const char *str, int x, int y);
+
+procedure Draw_Text
+       (X, Y : in Integer;
+        Text : in String);
+with Pre => Text'Length > 0;
+
+void fl_draw(const char *str, int x, int y, int w, int h,
+    Fl_Align align, Fl_Image *img=0, int draw_symbols=1);
+
+procedure Draw_Text
+       (X, Y, W, H : in Integer;
+        Text       : in String;
+        Align      : in Alignment;
+        Symbols    : in Boolean := True);
+
+procedure Draw_Text
+       (X, Y, W, H : in Integer;
+        Text       : in String;
+        Align      : in Alignment;
+        Picture    : in FLTK.Images.Image'Class;
+        Symbols    : in Boolean := True);
+
+void fl_draw(const char *str, int x, int y, int w, int h,
+    Fl_Align align, void (*callthis)(const char *, int, int, int),
+    Fl_Image *img=0, int draw_symbols=1);
+
+procedure Draw_Text
+       (X, Y, W, H : in Integer;
+        Text       : in String;
+        Align      : in Alignment;
+        Func       : in Text_Drawing_Function;
+        Symbols    : in Boolean := True);
+
+procedure Draw_Text
+       (X, Y, W, H : in Integer;
+        Text       : in String;
+        Align      : in Alignment;
+        Func       : in Text_Drawing_Function;
+        Picture    : in FLTK.Images.Image'Class;
+        Symbols    : in Boolean := True);
+
+void fl_draw(int angle, const char *str, int n, int x, int y);
+
+void fl_draw(int angle, const char *str, int x, int y);
+
+procedure Draw_Text
+       (X, Y  : in Integer;
+        Text  : in String;
+        Angle : in Integer);
+
+void fl_draw_box(Fl_Boxtype, int x, int y, int w, int h, Fl_Color);
+
+procedure Draw_Box
+       (X, Y, W, H : in Integer;
+        Kind       : in Box_Kind;
+        Hue        : in Color);
+
+void fl_draw_image(const uchar *buf, int X, int Y,
+    int W, int H, int D=3, int L=0);
+
+
+
+void fl_draw_image(Fl_Draw_Image_Cb cb, void *data,
+    int X, int Y, int W, int H, int D=3);
+
+
+
+void fl_draw_image_mono(const uchar *buf, int X, int Y,
+    int W, int H, int D=1, int L=0);
+
+
+
+void fl_draw_image_mono(Fl_Draw_Image_Cb cb, void *data,
+    int X, int Y, int W, int H, int D=1);
+
+
+
+int fl_draw_pixmap(char * const *data, int x, int y,
+    Fl_Color=FL_GRAY);
+
+
+
+int fl_draw_pixmap(const char * const *cdata, int x, int y,
+    Fl_Color=FL_GRAY);
+
+
+
+int fl_draw_symbol(const char *label, int x, int y,
+    int w, int h, Fl_Color);
+
+procedure Draw_Symbol
+       (X, Y, W, H : in Integer;
+        Name       : in String;
+        Hue        : in Color);
+
+void fl_end_complex_polygon();
+
+procedure End_Complex_Polygon;
+
+void fl_end_line();
+
+procedure End_Line;
+
+void fl_end_loop();
+
+procedure End_Loop;
+
+void fl_end_points();
+
+procedure End_Points;
+
+void fl_end_polygon();
+
+procedure End_Polygon;
+
+const char * fl_expand_text(const char *from, char *buf, int maxbuf,
+    double maxw, int &n, double &width, int wrap, int draw_symbols=0);
+
+
+
+Fl_Font fl_font();
+
+function Get_Font
+    return Font_Kind;
+
+void fl_font(Fl_Font face, Fl_Fontsize fsize);
+
+procedure Set_Font
+       (Kind : in Font_Kind;
+        Size : in Font_Size);
+
+void fl_frame(const char *s, int x, int y, int w, int h);
+
+void fl_frame2(const char *s, int x, int y, int w, int h);
+
+procedure Frame
+       (X, Y, W, H               : in Integer;
+        Top, Left, Bottom, Right : in Greyscale);
+
+void fl_gap();
+
+procedure Gap;
+
+int fl_height();
+
+function Font_Line_Spacing
+    return Integer;
+
+int fl_height(int font, int size);
+
+function Font_Height
+       (Kind : in Font_Kind;
+        Size : in Font_Size)
+    return Natural;
+
+const char * fl_latin1_to_local(const char *t, int n=-1);
+
+function Latin1_To_Local
+       (From : in String)
+    return String;
+
+void fl_line(int x, int y, int x1, int y1);
+
+procedure Line
+       (X0, Y0 : in Integer;
+        X1, Y1 : in Integer);
+
+void fl_line(int x, int y, int x1, int y1, int x2, int y2);
+
+procedure Line
+       (X0, Y0 : in Integer;
+        X1, Y1 : in Integer;
+        X2, Y2 : in Integer);
+
+void fl_line_style(int style, int width=0, char *dashes=0);
+
+procedure Set_Line_Style
+       (Line   : in Line_Kind      := Solid_Line;
+        Cap    : in Cap_Kind       := Default_Cap;
+        Join   : in Join_Kind      := Default_Join;
+        Width  : in Natural        := 0;
+        Dashes : in Dash_Gap_Array := Empty_Dashes);
+
+const char * fl_local_to_latin1(const char *t, int n=-1);
+
+function Local_To_Latin1
+       (From : in String)
+    return String;
+
+const char * fl_local_to_mac_roman(const char *t, int n=-1);
+
+function Local_To_Mac_Roman
+       (From : in String)
+    return String;
+
+void fl_loop(int x, int y, int x1, int y1, int x2, int y2);
+
+procedure Outline
+       (X0, Y0 : in Integer;
+        X1, Y1 : in Integer;
+        X2, Y2 : in Integer);
+
+void fl_loop(int x, int y, int x1, int y1, int x2, int y2, int x3, int y3);
+
+procedure Outline
+       (X0, Y0 : in Integer;
+        X1, Y1 : in Integer;
+        X2, Y2 : in Integer;
+        X3, Y3 : in Integer);
+
+const char * fl_mac_roman_to_local(const char *t, int n=-1);
+
+function Mac_Roman_To_Local
+       (From : in String)
+    return String;
+
+void fl_measure(const char *str, int &x, int &y, int draw_symbols=1);
+
+procedure Measure
+       (Text    : in     String;
+        W, H    :    out Natural;
+        Symbols : in     Boolean := True;
+        Wrap    : in     Natural := 0);
+
+int fl_measure_pixmap(char *const *data, int &w, int &h);
+
+
+
+int fl_measure_pixmap(const char *const *cdata, int &w, int &h);
+
+
+
+void fl_mult_matrix(double a, double b, double c, double d,
+    double x, double y);
+
+procedure Mult_Matrix
+       (A, B, C, D, X, Y : in Long_Float);
+
+int fl_not_clipped(int x, int y, int w, int h);
+
+function Clip_Intersects
+       (X, Y, W, H : in Integer)
+    return Boolean;
+
+unsigned int fl_old_shortcut(const char *s);
+
Not applicable; original is legacy.
+void fl_overlay_clear();
+
+procedure Overlay_Clear();
+
+void fl_overlay_rect(int x, int y, int w, int h);
+
+procedure Overlay_Rect
+       (X, Y, W, H : in Integer);
+
+void fl_pie(int x, int y, int w, int h, double a1, double a2);
+
+procedure Pie
+       (X, Y, W, H     : in Integer;
+        Angle1, Angle2 : in Long_Float);
+
+void fl_point(int x, int y);
+
+procedure Point
+       (X, Y : in Integer);
+
+void fl_polygon(int x, int y, int x1, int y1, int x2, int y2);
+
+procedure Polygon
+       (X0, Y0 : in Integer;
+        X1, Y1 : in Integer;
+        X2, Y2 : in Integer);
+
+void fl_polygon(int x, int y, int x1, int y1,
+    int x2, int y2, int x3, int y3);
+
+procedure Polygon
+       (X0, Y0 : in Integer;
+        X1, Y1 : in Integer;
+        X2, Y2 : in Integer;
+        X3, Y3 : in Integer);
+
+void fl_pop_clip();
+
+procedure Pop_Clip();
+
+void fl_pop_matrix();
+
+procedure Pop_Matrix;
+
+void fl_push_clip(int x, int y, int w, int h);
+
+procedure Push_Clip
+       (X, Y, W, H : in Integer);
+
+void fl_push_matrix();
+
+procedure Push_Matrix;
+
+void fl_push_no_clip();
+
+procedure Push_No_Clip;
+
+uchar * fl_read_image(uchar *p, int X, int Y, int W, int H, int alpha=0);
+
+
+
+void fl_rect(int x, int y, int w, int h);
+
+procedure Rect
+       (X, Y, W, H : in Integer);
+
+void fl_rect(int x, int y, int w, int h, Fl_Color c);
+
+procedure Rect
+       (X, Y, W, H : in Integer;
+        Hue        : in Color);
+
+void fl_rectf(int x, int y, int w, int h);
+
+procedure Rect_Fill
+       (X, Y, W, H : in Integer);
+
+void fl_rectf(int x, int y, int w, int h, Fl_Color c);
+
+procedure Rect_Fill
+       (X, Y, W, H : in Integer;
+        Hue        : in Color);
+
+void fl_rectf(int x, int y, int w, int h, uchar r, uchar g, uchar b);
+
+procedure Rect_Fill
+       (X, Y, W, H : in Integer;
+        R, G, B    : in Color_Component);
+
+void fl_reset_spot();
+
+procedure Reset_Spot;
+
+void fl_restore_clip();
+
+procedure Restore_Clip;
+
+void fl_rotate(double d);
+
+procedure Rotate
+       (Angle : in Long_Float);
+
+void fl_rtl_draw(const char *str, int n, int x, int y);
+
+procedure Draw_Text_Right_Left
+       (X, Y : in Integer;
+        Text : in String);
+
+void fl_scale(double x);
+
+procedure Scale
+       (Factor : in Long_Float);
+
+void fl_scale(double x, double y);
+
+procedure Scale
+       (Factor_X, Factor_Y : in Long_Float);
+
+void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
+    void(*draw_area)(void *, int, int, int, int), void *data);
+
+procedure Scroll
+       (X, Y, W, H : in Integer;
+        DX, DY     : in Integer;
+        Callback   : in Area_Draw_Function);
+
+void fl_set_spot(int font, int size, int X, int Y,
+    int W, int H, Fl_Window *win=0);
+
+procedure Set_Spot
+       (X, Y, W, H : in Integer;
+        Font       : in Font_Kind;
+        Size       : in Font_Size);
+
+procedure Set_Spot
+       (X, Y, W, H : in Integer;
+        Font       : in Font_Kind;
+        Size       : in Font_Size;
+        Pane       : in FLTK.Widgets.Groups.Windows.Window'Class);
+
+void fl_set_status(int X, int Y, int W, int H);
+
+procedure Set_Status
+       (X, Y, W, H : in Integer);
+
+const char * fl_shortcut_label(unsigned int shortcut);
+
+const char * fl_shortcut_label(unsigned int shortcut, const char **eom);
+
+function Shortcut_Label
+       (Keys : in Key_Combo)
+    return String;
+
+Fl_Fontsize fl_size();
+
+function Get_Font_Size
+    return Font_Size;
+
+void fl_text_extents(const char *, int &dx, int &dy, int &w, int &h);
+
+void fl_text_extents(const char *t, int n, int &dx, int &dy, int &w, int &h);
+
+procedure Text_Extents
+       (Text         : in     String;
+        DX, DY, W, H :    out Integer);
+
+double fl_transform_dx(double x, double y);
+
+function Transform_DX
+       (X, Y : in Long_Float)
+    return Long_Float;
+
+double fl_transform_dy(double x, double y);
+
+function Transform_DY
+       (X, Y : in Long_Float)
+    return Long_Float;
+
+double fl_transform_x(double x, double y);
+
+function Transform_X
+       (X, Y : in Long_Float)
+    return Long_Float;
+
+double fl_transform_y(double x, double y);
+
+function Transform_Y
+       (X, Y : in Long_Float)
+    return Long_Float;
+
+void fl_transformed_vertex(double xf, double yf);
+
+procedure Transformed_Vertex
+       (XF, YF : in Long_Float);
+
+void fl_translate(double x, double y);
+
+procedure Translate
+       (X, Y : in Long_Float);
+
+void fl_vertex(double x, double y);
+
+procedure Vertex
+       (X, Y : in Long_Float);
+
+double fl_width(const char *txt);
+
+double fl_width(const char *txt, int n);
+
+function Width
+       (Text : in String)
+    return Long_Float;
+
+double fl_width(unsigned int c);
+
+function Width
+       (Glyph : in Character)
+    return Long_Float;
+
+function Width
+       (Glyph : in Wide_Character)
+    return Long_Float;
+
+function Width
+       (Glyph : in Wide_Wide_Character)
+    return Long_Float;
+
+void fl_xyline(int x, int y, int x1);
+
+procedure XY_Line
+       (X0, Y0, X1 : in Integer);
+
+void fl_xyline(int x, int y, int x1, int y2);
+
+procedure XY_Line
+       (X0, Y0, X1, Y2 : in Integer);
+
+void fl_xyline(int x, int y, int x1, int y2, int x3);
+
+procedure XY_Line
+       (X0, Y0, X1, Y2, X3 : in Integer);
+
+void fl_yxline(int x, int y, int y1);
+
+procedure YX_Line
+       (X0, Y0, Y1 : in Integer);
+
+void fl_yxline(int x, int y, int y1, int x2);
+
+procedure YX_Line
+       (X0, Y0, Y1, X2 : in Integer);
+
+void fl_yxline(int x, int y, int y1, int x2, int y3);
+
+procedure YX_Line
+       (X0, Y0, Y1, X2, Y3 : in Integer);
+
+ + + + + diff --git a/doc/index.html b/doc/index.html index e3c4f0a..d228fdc 100644 --- a/doc/index.html +++ b/doc/index.html @@ -14,9 +14,10 @@

Binding Map Index

-

List of C++ classes

+

List of C++ headers