summaryrefslogtreecommitdiff
path: root/src/drivers/Android/Fl_Android_Graphics_Driver.H
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2018-03-18 20:04:43 +0000
committerMatthias Melcher <fltk@matthiasm.com>2018-03-18 20:04:43 +0000
commitc3573d16f3cfe6ea63229b3edeba197314b5f043 (patch)
tree48909154449da3af0ab55ee7c8beac016be2f067 /src/drivers/Android/Fl_Android_Graphics_Driver.H
parent6dbe7ca8ed9791deb1b7d77efe153e20212cf3f2 (diff)
Android: Implemented font changing ( Fl::set_font(ix, name); )
and other font stuff. Fixed horizontal and vertical line drawing to include last pixel. Added stippling to focus rect. Added point drawing (slooow). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12774 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/Android/Fl_Android_Graphics_Driver.H')
-rw-r--r--src/drivers/Android/Fl_Android_Graphics_Driver.H119
1 files changed, 48 insertions, 71 deletions
diff --git a/src/drivers/Android/Fl_Android_Graphics_Driver.H b/src/drivers/Android/Fl_Android_Graphics_Driver.H
index 08bd4666b..dcfd27446 100644
--- a/src/drivers/Android/Fl_Android_Graphics_Driver.H
+++ b/src/drivers/Android/Fl_Android_Graphics_Driver.H
@@ -39,44 +39,16 @@ class Fl_Android_Bytemap;
This class is implemented only on the Windows platform.
*/
-class FL_EXPORT Fl_Android_Graphics_Driver : public Fl_Scalable_Graphics_Driver {
-
-#if 0
-private:
- BOOL alpha_blend_(int x, int y, int w, int h, HDC src_gc, int srcx, int srcy, int srcw, int srch);
- int depth; // to support translation
- POINT *origins; // to support translation
- void set_current_();
-protected:
- HDC gc_;
- int numcount;
- int counts[20];
- uchar **mask_bitmap_;
- uchar **mask_bitmap() {return mask_bitmap_;}
- void mask_bitmap(uchar **value) { mask_bitmap_ = value; }
- int p_size;
- POINT *p;
-#endif
+class FL_EXPORT Fl_Android_Graphics_Driver : public Fl_Scalable_Graphics_Driver
+{
public:
Fl_Android_Graphics_Driver();
virtual ~Fl_Android_Graphics_Driver() override;
-#if 0
- Fl_GDI_Graphics_Driver() {mask_bitmap_ = NULL; gc_ = NULL; p_size = 0; p = NULL; depth = -1; origins = NULL;}
- virtual ~Fl_GDI_Graphics_Driver() { if (p) free(p); delete[] origins;}
- virtual int has_feature(driver_feature mask) { return mask & NATIVE; }
- char can_do_alpha_blending();
- virtual void gc(void *ctxt) { gc_ = (HDC)ctxt; global_gc(); }
- virtual void *gc() {return gc_;}
- // --- bitmap stuff
- Fl_Bitmask create_bitmask(int w, int h, const uchar *array);
- void delete_bitmask(Fl_Bitmask bm);
-#endif
+ void make_current(Fl_Window*);
+
+ // --- text and font stuff
virtual void draw_unscaled(const char* str, int n, int x, int y) override;
-#if 0
- virtual void draw_unscaled(int angle, const char *str, int n, int x, int y);
- virtual void rtl_draw_unscaled(const char* str, int n, int x, int y);
-#endif
virtual double width_unscaled(const char *str, int n) override;
virtual double width_unscaled(unsigned int c) override;
virtual Fl_Fontsize size_unscaled() override;
@@ -84,7 +56,46 @@ public:
virtual int height_unscaled() override;
virtual int descent_unscaled() override;
virtual void font_unscaled(Fl_Font face, Fl_Fontsize size) override;
+ virtual const char *get_font_name(Fl_Font fnum, int* ap) override;
+ virtual const char *font_name(int num) override;
+ virtual int get_font_sizes(Fl_Font fnum, int*& sizep) override;
+ virtual Fl_Font set_fonts(const char *name) override;
+ virtual void font_name(int num, const char *name) override;
+
+ // --- line drawinf stuff
+ virtual void rectf_unscaled(float x, float y, float w, float h) override;
+ void rectf_unclipped(float x, float y, float w, float h);
+ virtual void point_unscaled(float x, float y) override;
+ void rect_unscaled(float x, float y, float w, float h);
+ virtual void xyline_unscaled(float x, float y, float x1) override;
+ void xyline_unclipped(float x, float y, float x1);
+ virtual void yxline_unscaled(float x, float y, float y1) override;
+ void yxline_unclipped(float x, float y, float y1);
+
+ // --- clipping
+ virtual void push_clip(int x, int y, int w, int h) override;
+ virtual int clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H) override;
+ virtual int not_clipped(int x, int y, int w, int h) override;
+ virtual void push_no_clip() override;
+ virtual void pop_clip() override;
+ virtual void restore_clip() override;
+ virtual void clip_region(Fl_Region r) override;
+ virtual Fl_Region clip_region() override;
+
+ virtual void line_style_unscaled(int style, float width, char* dashes) override;
+
+ // --- matrix based drawing
+// virtual void line_unscaled(float x, float y, float x1, float y1) override;
+
+
#if 0
+ virtual int has_feature(driver_feature mask) { return mask & NATIVE; }
+ char can_do_alpha_blending();
+ // --- bitmap stuff
+ Fl_Bitmask create_bitmask(int w, int h, const uchar *array);
+ void delete_bitmask(Fl_Bitmask bm);
+ virtual void draw_unscaled(int angle, const char *str, int n, int x, int y);
+ virtual void rtl_draw_unscaled(const char* str, int n, int x, int y);
void draw_unscaled(Fl_Pixmap *pxm, float s, int XP, int YP, int WP, int HP, int cx, int cy);
void draw_unscaled(Fl_Bitmap *pxm, float s, int XP, int YP, int WP, int HP, int cx, int cy);
void draw_unscaled(Fl_RGB_Image *img, float s, int XP, int YP, int WP, int HP, int cx, int cy);
@@ -97,15 +108,7 @@ public:
virtual void uncache_pixmap(fl_uintptr_t p);
fl_uintptr_t cache(Fl_Bitmap *img, int w, int h, const uchar *array);
void uncache(Fl_RGB_Image *img, fl_uintptr_t &id_, fl_uintptr_t &mask_);
- virtual double width_unscaled(const char *str, int n);
- virtual double width_unscaled(unsigned int c);
- void text_extents_unscaled(const char*, int n, int& dx, int& dy, int& w, int& h);
- int height_unscaled();
- int descent_unscaled();
- Fl_Fontsize size_unscaled();
-#if ! defined(FL_DOXYGEN)
void copy_offscreen_with_alpha(int x,int y,int w,int h,HBITMAP bitmap,int srcx,int srcy);
-#endif
virtual void copy_offscreen(int x, int y, int w, int h, Fl_Offscreen pixmap, int srcx, int srcy);
void add_rectangle_to_region(Fl_Region r, int x, int y, int w, int h);
Fl_Region XRectangleRegion(int x, int y, int w, int h);
@@ -118,36 +121,12 @@ protected:
void transformed_vertex0(float x, float y);
void fixloop();
// --- implementation is in src/fl_rect.cxx which includes src/cfg_gfx/gdi_rect.cxx
- virtual void point_unscaled(float x, float y);
- void rect_unscaled(float x, float y, float w, float h);
- void focus_rect(int x, int y, int w, int h);
-#endif
- virtual void rectf_unscaled(float x, float y, float w, float h) override;
- void rectf_unclipped(float x, float y, float w, float h);
-#if 0
virtual void line_unscaled(float x, float y, float x1, float y1);
virtual void line_unscaled(float x, float y, float x1, float y1, float x2, float y2);
-#endif
- virtual void xyline_unscaled(float x, float y, float x1) override;
- void xyline_unclipped(float x, float y, float x1);
- virtual void yxline_unscaled(float x, float y, float y1) override;
- void yxline_unclipped(float x, float y, float y1);
-#if 0
virtual void loop_unscaled(float x0, float y0, float x1, float y1, float x2, float y2);
virtual void loop_unscaled(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3);
virtual void polygon_unscaled(float x0, float y0, float x1, float y1, float x2, float y2);
virtual void polygon_unscaled(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3);
-#endif
- // --- clipping
- virtual void push_clip(int x, int y, int w, int h) override;
- virtual int clip_box(int x, int y, int w, int h, int &X, int &Y, int &W, int &H) override;
- virtual int not_clipped(int x, int y, int w, int h) override;
- virtual void push_no_clip() override;
- virtual void pop_clip() override;
- virtual void restore_clip() override;
- virtual void clip_region(Fl_Region r) override;
- virtual Fl_Region clip_region() override;
-#if 0
virtual Fl_Region scale_clip(float f);
// --- implementation is in src/fl_vertex.cxx which includes src/cfg_gfx/xxx_rect.cxx
void begin_complex_polygon();
@@ -173,28 +152,26 @@ protected:
void free_color(Fl_Color i, int overlay);
void set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win);
void reset_spot();
- virtual Fl_Font set_fonts(const char *name);
- virtual int get_font_sizes(Fl_Font fnum, int*& sizep);
- virtual const char* get_font_name(Fl_Font fnum, int* ap);
- virtual const char *font_name(int num);
- virtual void font_name(int num, const char *name);
void global_gc();
virtual void overlay_rect(int x, int y, int w , int h);
#endif
+protected:
static uint16_t make565(Fl_Color crgba);
void render_bytemap(int x, int y, Fl_Android_Bytemap *bm, Fl_Rect_Region &r);
int render_letter(int xx, int yy, uint32_t c, Fl_Rect_Region &r);
- void make_current(Fl_Window*);
int32_t pStride;
uint16_t *pBits;
+ int pLineStyle = 0;
+
// Clipping region of the current window in window coordinates (see: pStride and pBits)
Fl_Rect_Region pWindowRegion;
+ // clipping region of the window minus overlapping other windows
Fl_Complex_Region pDesktopWindowRegion;
// Final clipping region for all graphics calls to this class.