mirror of
https://github.com/fltk/fltk.git
synced 2026-05-30 04:55:29 +08:00
virtualizes fl_set_spot and fl_reset_spot
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11640 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
@@ -240,6 +240,8 @@ public:
|
|||||||
virtual float scale_font_for_PostScript(Fl_Font_Descriptor *desc, int s) { return float(s); }
|
virtual float scale_font_for_PostScript(Fl_Font_Descriptor *desc, int s) { return float(s); }
|
||||||
// default implementation may be enough
|
// default implementation may be enough
|
||||||
virtual float scale_bitmap_for_PostScript() { return 2; }
|
virtual float scale_bitmap_for_PostScript() { return 2; }
|
||||||
|
virtual void set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win);
|
||||||
|
virtual void reset_spot();
|
||||||
// each platform implements these 3 functions its own way
|
// each platform implements these 3 functions its own way
|
||||||
static void add_rectangle_to_region(Fl_Region r, int x, int y, int w, int h);
|
static void add_rectangle_to_region(Fl_Region r, int x, int y, int w, int h);
|
||||||
static Fl_Region XRectangleRegion(int x, int y, int w, int h);
|
static Fl_Region XRectangleRegion(int x, int y, int w, int h);
|
||||||
|
|||||||
@@ -69,6 +69,15 @@ void Fl_Graphics_Driver::copy_offscreen(int x, int y, int w, int h, Fl_Offscreen
|
|||||||
delete[] img;
|
delete[] img;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Fl_Graphics_Driver::set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
||||||
|
{
|
||||||
|
// nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fl_Graphics_Driver::reset_spot()
|
||||||
|
{
|
||||||
|
// nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id$".
|
// End of "$Id$".
|
||||||
|
|||||||
@@ -147,14 +147,6 @@ static KeyScript_type KeyScript;
|
|||||||
|
|
||||||
|
|
||||||
/* fltk-utf8 placekeepers */
|
/* fltk-utf8 placekeepers */
|
||||||
void fl_reset_spot()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_status(int x, int y, int w, int h)
|
void fl_set_status(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,16 +40,6 @@ void *fl_gc = NULL;
|
|||||||
|
|
||||||
Window fl_window = NULL;
|
Window fl_window = NULL;
|
||||||
|
|
||||||
void fl_reset_spot()
|
|
||||||
{
|
|
||||||
# pragma message "FL_PORTING: implement fl_reset_spot"
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
|
||||||
{
|
|
||||||
# pragma message "FL_PORTING: implement fl_set_spot"
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_status(int x, int y, int w, int h)
|
void fl_set_status(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
# pragma message "FL_PORTING: implement fl_set_status"
|
# pragma message "FL_PORTING: implement fl_set_status"
|
||||||
|
|||||||
@@ -290,32 +290,6 @@ static struct FD {
|
|||||||
|
|
||||||
extern unsigned int fl_codepage;
|
extern unsigned int fl_codepage;
|
||||||
|
|
||||||
void fl_reset_spot()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
|
||||||
{
|
|
||||||
if (!win) return;
|
|
||||||
Fl_Window* tw = win;
|
|
||||||
while (tw->parent()) tw = tw->window(); // find top level window
|
|
||||||
|
|
||||||
if (!tw->shown())
|
|
||||||
return;
|
|
||||||
|
|
||||||
HIMC himc = flImmGetContext(fl_xid(tw));
|
|
||||||
|
|
||||||
if (himc) {
|
|
||||||
COMPOSITIONFORM cfs;
|
|
||||||
cfs.dwStyle = CFS_POINT;
|
|
||||||
cfs.ptCurrentPos.x = X;
|
|
||||||
cfs.ptCurrentPos.y = Y - tw->labelsize();
|
|
||||||
MapWindowPoints(fl_xid(win), fl_xid(tw), &cfs.ptCurrentPos, 1);
|
|
||||||
flImmSetCompositionWindow(himc, &cfs);
|
|
||||||
flImmReleaseContext(fl_xid(tw), himc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_status(int x, int y, int w, int h)
|
void fl_set_status(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -489,79 +489,6 @@ static void fl_new_ic()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static XRectangle spot;
|
|
||||||
static int spotf = -1;
|
|
||||||
static int spots = -1;
|
|
||||||
|
|
||||||
void fl_reset_spot(void)
|
|
||||||
{
|
|
||||||
spot.x = -1;
|
|
||||||
spot.y = -1;
|
|
||||||
//if (fl_xim_ic) XUnsetICFocus(fl_xim_ic);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
|
||||||
{
|
|
||||||
int change = 0;
|
|
||||||
XVaNestedList preedit_attr;
|
|
||||||
static XFontSet fs = NULL;
|
|
||||||
char **missing_list;
|
|
||||||
int missing_count;
|
|
||||||
char *def_string;
|
|
||||||
char *fnt = NULL;
|
|
||||||
bool must_free_fnt =true;
|
|
||||||
|
|
||||||
static XIC ic = NULL;
|
|
||||||
|
|
||||||
if (!fl_xim_ic || !fl_is_over_the_spot) return;
|
|
||||||
//XSetICFocus(fl_xim_ic);
|
|
||||||
if (X != spot.x || Y != spot.y) {
|
|
||||||
spot.x = X;
|
|
||||||
spot.y = Y;
|
|
||||||
spot.height = H;
|
|
||||||
spot.width = W;
|
|
||||||
change = 1;
|
|
||||||
}
|
|
||||||
if (font != spotf || size != spots) {
|
|
||||||
spotf = font;
|
|
||||||
spots = size;
|
|
||||||
change = 1;
|
|
||||||
if (fs) {
|
|
||||||
XFreeFontSet(fl_display, fs);
|
|
||||||
}
|
|
||||||
#if USE_XFT
|
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
|
||||||
// FIXME: warning XFT support here
|
|
||||||
#endif /*__GNUC__*/
|
|
||||||
|
|
||||||
fnt = NULL; // fl_get_font_xfld(font, size);
|
|
||||||
if (!fnt) {fnt = (char*)"-misc-fixed-*";must_free_fnt=false;}
|
|
||||||
fs = XCreateFontSet(fl_display, fnt, &missing_list,
|
|
||||||
&missing_count, &def_string);
|
|
||||||
#else
|
|
||||||
fnt = fl_get_font_xfld(font, size);
|
|
||||||
if (!fnt) {fnt = (char*)"-misc-fixed-*";must_free_fnt=false;}
|
|
||||||
fs = XCreateFontSet(fl_display, fnt, &missing_list,
|
|
||||||
&missing_count, &def_string);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if (fl_xim_ic != ic) {
|
|
||||||
ic = fl_xim_ic;
|
|
||||||
change = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fnt && must_free_fnt) free(fnt);
|
|
||||||
if (!change) return;
|
|
||||||
|
|
||||||
|
|
||||||
preedit_attr = XVaCreateNestedList(0,
|
|
||||||
XNSpotLocation, &spot,
|
|
||||||
XNFontSet, fs, NULL);
|
|
||||||
XSetICValues(fl_xim_ic, XNPreeditAttributes, preedit_attr, NULL);
|
|
||||||
XFree(preedit_attr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void fl_set_status(int x, int y, int w, int h)
|
void fl_set_status(int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
XVaNestedList status_attr;
|
XVaNestedList status_attr;
|
||||||
|
|||||||
@@ -127,8 +127,11 @@ protected:
|
|||||||
void color(Fl_Color c);
|
void color(Fl_Color c);
|
||||||
Fl_Color color() { return color_; }
|
Fl_Color color() { return color_; }
|
||||||
void color(uchar r, uchar g, uchar b);
|
void color(uchar r, uchar g, uchar b);
|
||||||
|
void set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win);
|
||||||
|
void reset_spot();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The graphics driver used when printing on MSWindows.
|
The graphics driver used when printing on MSWindows.
|
||||||
*
|
*
|
||||||
@@ -142,6 +145,7 @@ public:
|
|||||||
int draw_scaled(Fl_Image *img, int XP, int YP, int WP, int HP);
|
int draw_scaled(Fl_Image *img, int XP, int YP, int WP, int HP);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class Fl_Translated_GDI_Graphics_Driver : public Fl_GDI_Graphics_Driver {
|
class Fl_Translated_GDI_Graphics_Driver : public Fl_GDI_Graphics_Driver {
|
||||||
unsigned depth;
|
unsigned depth;
|
||||||
POINT origins[10];
|
POINT origins[10];
|
||||||
@@ -151,6 +155,7 @@ public:
|
|||||||
virtual void untranslate_all(void);
|
virtual void untranslate_all(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // FL_GDI_GRAPHICS_DRIVER_H
|
#endif // FL_GDI_GRAPHICS_DRIVER_H
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -179,6 +179,34 @@ void Fl_Graphics_Driver::XDestroyRegion(Fl_Region r) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Fl_Graphics_Driver::reset_spot()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fl_Graphics_Driver::set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
||||||
|
{
|
||||||
|
if (!win) return;
|
||||||
|
Fl_Window* tw = win;
|
||||||
|
while (tw->parent()) tw = tw->window(); // find top level window
|
||||||
|
|
||||||
|
if (!tw->shown())
|
||||||
|
return;
|
||||||
|
|
||||||
|
HIMC himc = flImmGetContext(fl_xid(tw));
|
||||||
|
|
||||||
|
if (himc) {
|
||||||
|
COMPOSITIONFORM cfs;
|
||||||
|
cfs.dwStyle = CFS_POINT;
|
||||||
|
cfs.ptCurrentPos.x = X;
|
||||||
|
cfs.ptCurrentPos.y = Y - tw->labelsize();
|
||||||
|
MapWindowPoints(fl_xid(win), fl_xid(tw), &cfs.ptCurrentPos, 1);
|
||||||
|
flImmSetCompositionWindow(himc, &cfs);
|
||||||
|
flImmReleaseContext(fl_xid(tw), himc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id$".
|
// End of "$Id$".
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ Fl_Pico_Window_Driver::~Fl_Pico_Window_Driver()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// --- window data
|
|
||||||
|
|
||||||
int Fl_Pico_Window_Driver::decorated_w()
|
int Fl_Pico_Window_Driver::decorated_w()
|
||||||
{
|
{
|
||||||
return w();
|
return w();
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ Fl_PicoSDL_Screen_Driver::Fl_PicoSDL_Screen_Driver()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Fl_PicoSDL_Screen_Driver::~Fl_PicoSDL_Screen_Driver()
|
Fl_PicoSDL_Screen_Driver::~Fl_PicoSDL_Screen_Driver()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -118,12 +119,22 @@ double Fl_PicoSDL_Screen_Driver::wait(double time_to_wait)
|
|||||||
break;
|
break;
|
||||||
case SDL_MOUSEWHEEL:
|
case SDL_MOUSEWHEEL:
|
||||||
break;
|
break;
|
||||||
|
case SDL_KEYDOWN: // full keyboard support is a lot more complex
|
||||||
|
case SDL_KEYUP:
|
||||||
|
if (e.type==SDL_KEYDOWN) Fl::e_number = FL_KEYDOWN; else Fl::e_number = FL_KEYUP;
|
||||||
|
if (!window) break;
|
||||||
|
if (e.key.keysym.sym==SDLK_ESCAPE) {
|
||||||
|
Fl::e_keysym = FL_Escape;
|
||||||
|
Fl::handle(Fl::e_number, window);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// FIXME: remove the stuff below
|
||||||
|
|
||||||
#include <FL/x.H>
|
#include <FL/x.H>
|
||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
@@ -147,8 +158,6 @@ double Fl_PicoSDL_Screen_Driver::wait(double time_to_wait)
|
|||||||
|
|
||||||
#if !defined(FL_DOXYGEN) // FIXME silence Doxygen warnings
|
#if !defined(FL_DOXYGEN) // FIXME silence Doxygen warnings
|
||||||
|
|
||||||
void fl_set_spot(int, int, int, int, int, int, Fl_Window*) { }
|
|
||||||
void fl_reset_spot() { }
|
|
||||||
//const char *fl_filename_name(char const*) { return 0; }
|
//const char *fl_filename_name(char const*) { return 0; }
|
||||||
void fl_clipboard_notify_change() { }
|
void fl_clipboard_notify_change() { }
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
Fl_System_Driver *Fl_System_Driver::newSystemDriver()
|
Fl_System_Driver *Fl_System_Driver::newSystemDriver()
|
||||||
{
|
{
|
||||||
return new Fl_System_Driver();
|
return new Fl_System_Driver();
|
||||||
// return new Fl_PicoSDL_System_Driver();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
#include <FL/Fl.H>
|
#include <FL/Fl.H>
|
||||||
#include <FL/Fl_WIndow.H>
|
#include <FL/Fl_WIndow.H>
|
||||||
|
|
||||||
void Fl_Window_Driver::default_icons(Fl_RGB_Image const**, int) { }
|
|
||||||
|
|
||||||
const char *fl_local_alt = "alt";
|
const char *fl_local_alt = "alt";
|
||||||
const char *fl_local_ctrl = "ctrl";
|
const char *fl_local_ctrl = "ctrl";
|
||||||
@@ -38,6 +38,10 @@ Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *win)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Fl_Window_Driver::default_icons(Fl_RGB_Image const**, int) {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Fl_PicoSDL_Window_Driver::Fl_PicoSDL_Window_Driver(Fl_Window *win)
|
Fl_PicoSDL_Window_Driver::Fl_PicoSDL_Window_Driver(Fl_Window *win)
|
||||||
: Fl_Pico_Window_Driver(win)
|
: Fl_Pico_Window_Driver(win)
|
||||||
{
|
{
|
||||||
@@ -88,32 +92,9 @@ Fl_X *Fl_PicoSDL_Window_Driver::makeWindow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
void Fl_PicoSDL_Window_Driver::flush_single()
|
|
||||||
{
|
|
||||||
if (!shown()) return;
|
|
||||||
pWindow->make_current();
|
|
||||||
Fl_X *i = Fl_X::i(pWindow);
|
|
||||||
if (!i) return;
|
|
||||||
fl_clip_region(i->region);
|
|
||||||
i->region = 0;
|
|
||||||
// SDL_RenderClear((SDL_Renderer*)i->xid);
|
|
||||||
pWindow->draw();
|
|
||||||
SDL_RenderPresent((SDL_Renderer*)i->xid);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void Fl_PicoSDL_Window_Driver::draw_end()
|
void Fl_PicoSDL_Window_Driver::draw_end()
|
||||||
{
|
{
|
||||||
// if (!shown()) return;
|
|
||||||
// pWindow->make_current();
|
|
||||||
Fl_X *i = Fl_X::i(pWindow);
|
Fl_X *i = Fl_X::i(pWindow);
|
||||||
// if (!i) return;
|
|
||||||
// fl_clip_region(i->region);
|
|
||||||
// i->region = 0;
|
|
||||||
// // SDL_RenderClear((SDL_Renderer*)i->xid);
|
|
||||||
// pWindow->draw();
|
|
||||||
SDL_RenderPresent((SDL_Renderer*)i->xid);
|
SDL_RenderPresent((SDL_Renderer*)i->xid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,6 +104,7 @@ void Fl_PicoSDL_Window_Driver::make_current()
|
|||||||
fl_window = pWindow->i->xid;
|
fl_window = pWindow->i->xid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Fl_PicoSDL_Window_Driver::show() {
|
void Fl_PicoSDL_Window_Driver::show() {
|
||||||
if (!shown()) {
|
if (!shown()) {
|
||||||
makeWindow();
|
makeWindow();
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ protected:
|
|||||||
void color(uchar r, uchar g, uchar b);
|
void color(uchar r, uchar g, uchar b);
|
||||||
virtual float scale_font_for_PostScript(Fl_Font_Descriptor *desc, int s);
|
virtual float scale_font_for_PostScript(Fl_Font_Descriptor *desc, int s);
|
||||||
virtual float scale_bitmap_for_PostScript();
|
virtual float scale_bitmap_for_PostScript();
|
||||||
|
virtual void set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win);
|
||||||
|
virtual void reset_spot();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -118,6 +118,81 @@ void Fl_Xlib_Graphics_Driver::fixloop() { // remove equal points from closed pa
|
|||||||
while (n>2 && p[n-1].x == p[0].x && p[n-1].y == p[0].y) n--;
|
while (n>2 && p[n-1].x == p[0].x && p[n-1].y == p[0].y) n--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: should be members of Fl_Xlib_Graphics_Driver
|
||||||
|
static XRectangle spot;
|
||||||
|
static int spotf = -1;
|
||||||
|
static int spots = -1;
|
||||||
|
|
||||||
|
void Fl_Xlib_Graphics_Driver::reset_spot(void)
|
||||||
|
{
|
||||||
|
spot.x = -1;
|
||||||
|
spot.y = -1;
|
||||||
|
//if (fl_xim_ic) XUnsetICFocus(fl_xim_ic);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Fl_Xlib_Graphics_Driver::set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
||||||
|
{
|
||||||
|
int change = 0;
|
||||||
|
XVaNestedList preedit_attr;
|
||||||
|
static XFontSet fs = NULL;
|
||||||
|
char **missing_list;
|
||||||
|
int missing_count;
|
||||||
|
char *def_string;
|
||||||
|
char *fnt = NULL;
|
||||||
|
bool must_free_fnt =true;
|
||||||
|
|
||||||
|
static XIC ic = NULL;
|
||||||
|
|
||||||
|
if (!fl_xim_ic || !fl_is_over_the_spot) return;
|
||||||
|
//XSetICFocus(fl_xim_ic);
|
||||||
|
if (X != spot.x || Y != spot.y) {
|
||||||
|
spot.x = X;
|
||||||
|
spot.y = Y;
|
||||||
|
spot.height = H;
|
||||||
|
spot.width = W;
|
||||||
|
change = 1;
|
||||||
|
}
|
||||||
|
if (font != spotf || size != spots) {
|
||||||
|
spotf = font;
|
||||||
|
spots = size;
|
||||||
|
change = 1;
|
||||||
|
if (fs) {
|
||||||
|
XFreeFontSet(fl_display, fs);
|
||||||
|
}
|
||||||
|
#if USE_XFT
|
||||||
|
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
// FIXME: warning XFT support here
|
||||||
|
#endif /*__GNUC__*/
|
||||||
|
|
||||||
|
fnt = NULL; // fl_get_font_xfld(font, size);
|
||||||
|
if (!fnt) {fnt = (char*)"-misc-fixed-*";must_free_fnt=false;}
|
||||||
|
fs = XCreateFontSet(fl_display, fnt, &missing_list,
|
||||||
|
&missing_count, &def_string);
|
||||||
|
#else
|
||||||
|
fnt = fl_get_font_xfld(font, size);
|
||||||
|
if (!fnt) {fnt = (char*)"-misc-fixed-*";must_free_fnt=false;}
|
||||||
|
fs = XCreateFontSet(fl_display, fnt, &missing_list,
|
||||||
|
&missing_count, &def_string);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (fl_xim_ic != ic) {
|
||||||
|
ic = fl_xim_ic;
|
||||||
|
change = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fnt && must_free_fnt) free(fnt);
|
||||||
|
if (!change) return;
|
||||||
|
|
||||||
|
|
||||||
|
preedit_attr = XVaCreateNestedList(0,
|
||||||
|
XNSpotLocation, &spot,
|
||||||
|
XNFontSet, fs, NULL);
|
||||||
|
XSetICValues(fl_xim_ic, XNPreeditAttributes, preedit_attr, NULL);
|
||||||
|
XFree(preedit_attr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id$".
|
// End of "$Id$".
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -50,6 +50,17 @@ void fl_text_extents(const char *c, int &dx, int &dy, int &w, int &h) {
|
|||||||
void fl_draw(const char* str, int l, float x, float y) {
|
void fl_draw(const char* str, int l, float x, float y) {
|
||||||
fl_graphics_driver->draw(str, l, x, y);
|
fl_graphics_driver->draw(str, l, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fl_set_spot(int font, int size, int X, int Y, int W, int H, Fl_Window *win)
|
||||||
|
{
|
||||||
|
fl_graphics_driver->set_spot(font, size, X, Y, W, H, win);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fl_reset_spot()
|
||||||
|
{
|
||||||
|
fl_graphics_driver->reset_spot();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id$".
|
// End of "$Id$".
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user