2009-01-29 05:19:27 +00:00
|
|
|
/**
|
|
|
|
* $Id:
|
|
|
|
*
|
|
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
|
|
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*
|
|
|
|
* The Original Code is Copyright (C) 2009 Blender Foundation.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* Contributor(s): Blender Foundation
|
|
|
|
*
|
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef BLF_API_H
|
|
|
|
#define BLF_API_H
|
|
|
|
|
2.5: Text Editor back.
There was very little structure in this code, using many globals
and duplicated code. Now it should be better structured. Most
things should work, the main parts that are not back yet are the
python plugins and markers. Notes:
* Blenfont is used for drawing the text, nicely anti-aliased.
* A monospace truetype font was added, since that is needed for
the text editor. It's Bitstream Vera Sans Mono. This is the
default gnome terminal font, but it doesn't fit entirely well
with the other font I think, can be changed easily of course.
* Clipboard copy/cut/paste now always uses the system clipboard,
the code for the own cut buffer was removed.
* The interface buttons should support copy/cut/paste again now
as well.
* WM_clipboard_text_get/WM_clipboard_text_set were added to the
windowmanager code.
* Find panel is now a kind of second header, instead of a panel.
This needs especially a way to start editing the text field
immediately on open still.
* Operators are independent of the actual space when possible,
was a bit of puzzling but got it solved nice with notifiers,
and some lazy init for syntax highlight in the drawing code.
* RNA was created for the text editor space and used for buttons.
* Operators:
* New, Open, Reload, Save, Save As, Make Internal
* Run Script, Refresh Pyconstraints
* Copy, Cut, Paste
* Convert Whitespace, Uncomment, Comment, Indent, Unindent
* Line Break, Insert
* Next Marker, Previous Marker, Clear All Markers, Mark All
* Select Line, Select All
* Jump, Move, Move Select, Delete, Toggle Overwrite
* Scroll, Scroll Bar, Set Cursor, Line Number
* Find and Replace, Find, Replace, Find Set Selected,
Replace Set Selected
* To 3D Object
* Resolve Conflict
2009-02-28 23:33:35 +00:00
|
|
|
struct rctf;
|
|
|
|
|
2009-02-17 16:56:29 +00:00
|
|
|
int BLF_init(void);
|
|
|
|
void BLF_exit(void);
|
|
|
|
|
|
|
|
int BLF_load(char *name);
|
|
|
|
int BLF_load_mem(char *name, unsigned char *mem, int mem_size);
|
|
|
|
|
New Bitmap draw mode for Freetype2 fonts.
The library can load any font supported by the Freetype2 library or
used the internal bitmap font.
With both types it's possible draw the text as texture or bitmap,
and using texture it's possible rotate, scale and clipping text.
Still have things to fix/add, but I think it's ready to move-on
and start droping the old api, most of (if it's not all) the
editors/interface/text.c will be remove, but some things still
has to be define, like:
* Where is store the fonts ? (default font, panel font, filesel font, etc)
I mean, every space have own fonts ? or we keep it on the context ?
It's not a really problem from the blenfont side, because every font
have reference number, so it's load only the first time.
* What we do about gettext ?
Keep the old system that call gettext inside the blenfont or replace
it for _() in the Blender source ?
Also things like pupmen has to be take care, if we want translate the menu.
Ok, time to sleep, back tomorrow to start moving the things :)
2009-04-07 08:42:28 +00:00
|
|
|
/*
|
|
|
|
* Set/Get the current font.
|
|
|
|
*/
|
2009-02-17 16:56:29 +00:00
|
|
|
void BLF_set(int fontid);
|
New Bitmap draw mode for Freetype2 fonts.
The library can load any font supported by the Freetype2 library or
used the internal bitmap font.
With both types it's possible draw the text as texture or bitmap,
and using texture it's possible rotate, scale and clipping text.
Still have things to fix/add, but I think it's ready to move-on
and start droping the old api, most of (if it's not all) the
editors/interface/text.c will be remove, but some things still
has to be define, like:
* Where is store the fonts ? (default font, panel font, filesel font, etc)
I mean, every space have own fonts ? or we keep it on the context ?
It's not a really problem from the blenfont side, because every font
have reference number, so it's load only the first time.
* What we do about gettext ?
Keep the old system that call gettext inside the blenfont or replace
it for _() in the Blender source ?
Also things like pupmen has to be take care, if we want translate the menu.
Ok, time to sleep, back tomorrow to start moving the things :)
2009-04-07 08:42:28 +00:00
|
|
|
int BLF_get(void);
|
|
|
|
|
2009-04-23 21:57:41 +00:00
|
|
|
/*
|
|
|
|
* Return the font type, can be freetype2 or internal, -1 if
|
|
|
|
* some error happen (no current font).
|
|
|
|
*/
|
|
|
|
int BLF_type_get(void);
|
|
|
|
|
2009-02-17 16:56:29 +00:00
|
|
|
void BLF_aspect(float aspect);
|
|
|
|
void BLF_position(float x, float y, float z);
|
|
|
|
void BLF_size(int size, int dpi);
|
|
|
|
void BLF_draw(char *str);
|
|
|
|
|
New Bitmap draw mode for Freetype2 fonts.
The library can load any font supported by the Freetype2 library or
used the internal bitmap font.
With both types it's possible draw the text as texture or bitmap,
and using texture it's possible rotate, scale and clipping text.
Still have things to fix/add, but I think it's ready to move-on
and start droping the old api, most of (if it's not all) the
editors/interface/text.c will be remove, but some things still
has to be define, like:
* Where is store the fonts ? (default font, panel font, filesel font, etc)
I mean, every space have own fonts ? or we keep it on the context ?
It's not a really problem from the blenfont side, because every font
have reference number, so it's load only the first time.
* What we do about gettext ?
Keep the old system that call gettext inside the blenfont or replace
it for _() in the Blender source ?
Also things like pupmen has to be take care, if we want translate the menu.
Ok, time to sleep, back tomorrow to start moving the things :)
2009-04-07 08:42:28 +00:00
|
|
|
/*
|
|
|
|
* This function return the bounding box of the string
|
|
|
|
* and are not multiplied by the aspect.
|
|
|
|
*/
|
2.5: Text Editor back.
There was very little structure in this code, using many globals
and duplicated code. Now it should be better structured. Most
things should work, the main parts that are not back yet are the
python plugins and markers. Notes:
* Blenfont is used for drawing the text, nicely anti-aliased.
* A monospace truetype font was added, since that is needed for
the text editor. It's Bitstream Vera Sans Mono. This is the
default gnome terminal font, but it doesn't fit entirely well
with the other font I think, can be changed easily of course.
* Clipboard copy/cut/paste now always uses the system clipboard,
the code for the own cut buffer was removed.
* The interface buttons should support copy/cut/paste again now
as well.
* WM_clipboard_text_get/WM_clipboard_text_set were added to the
windowmanager code.
* Find panel is now a kind of second header, instead of a panel.
This needs especially a way to start editing the text field
immediately on open still.
* Operators are independent of the actual space when possible,
was a bit of puzzling but got it solved nice with notifiers,
and some lazy init for syntax highlight in the drawing code.
* RNA was created for the text editor space and used for buttons.
* Operators:
* New, Open, Reload, Save, Save As, Make Internal
* Run Script, Refresh Pyconstraints
* Copy, Cut, Paste
* Convert Whitespace, Uncomment, Comment, Indent, Unindent
* Line Break, Insert
* Next Marker, Previous Marker, Clear All Markers, Mark All
* Select Line, Select All
* Jump, Move, Move Select, Delete, Toggle Overwrite
* Scroll, Scroll Bar, Set Cursor, Line Number
* Find and Replace, Find, Replace, Find Set Selected,
Replace Set Selected
* To 3D Object
* Resolve Conflict
2009-02-28 23:33:35 +00:00
|
|
|
void BLF_boundbox(char *str, struct rctf *box);
|
New Bitmap draw mode for Freetype2 fonts.
The library can load any font supported by the Freetype2 library or
used the internal bitmap font.
With both types it's possible draw the text as texture or bitmap,
and using texture it's possible rotate, scale and clipping text.
Still have things to fix/add, but I think it's ready to move-on
and start droping the old api, most of (if it's not all) the
editors/interface/text.c will be remove, but some things still
has to be define, like:
* Where is store the fonts ? (default font, panel font, filesel font, etc)
I mean, every space have own fonts ? or we keep it on the context ?
It's not a really problem from the blenfont side, because every font
have reference number, so it's load only the first time.
* What we do about gettext ?
Keep the old system that call gettext inside the blenfont or replace
it for _() in the Blender source ?
Also things like pupmen has to be take care, if we want translate the menu.
Ok, time to sleep, back tomorrow to start moving the things :)
2009-04-07 08:42:28 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* The next both function return the width and height
|
|
|
|
* of the string, using the current font and both value
|
|
|
|
* are multiplied by the aspect of the font.
|
|
|
|
*/
|
2009-02-19 16:39:36 +00:00
|
|
|
float BLF_width(char *str);
|
|
|
|
float BLF_height(char *str);
|
New Bitmap draw mode for Freetype2 fonts.
The library can load any font supported by the Freetype2 library or
used the internal bitmap font.
With both types it's possible draw the text as texture or bitmap,
and using texture it's possible rotate, scale and clipping text.
Still have things to fix/add, but I think it's ready to move-on
and start droping the old api, most of (if it's not all) the
editors/interface/text.c will be remove, but some things still
has to be define, like:
* Where is store the fonts ? (default font, panel font, filesel font, etc)
I mean, every space have own fonts ? or we keep it on the context ?
It's not a really problem from the blenfont side, because every font
have reference number, so it's load only the first time.
* What we do about gettext ?
Keep the old system that call gettext inside the blenfont or replace
it for _() in the Blender source ?
Also things like pupmen has to be take care, if we want translate the menu.
Ok, time to sleep, back tomorrow to start moving the things :)
2009-04-07 08:42:28 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* By default, rotation and clipping are disable and
|
|
|
|
* have to be enable/disable using BLF_enable/disable.
|
|
|
|
*/
|
2009-02-19 16:39:36 +00:00
|
|
|
void BLF_rotation(float angle);
|
2009-02-20 05:42:44 +00:00
|
|
|
void BLF_clipping(float xmin, float ymin, float xmax, float ymax);
|
2009-04-10 14:27:29 +00:00
|
|
|
void BLF_blur(int size);
|
|
|
|
|
2009-02-20 05:42:44 +00:00
|
|
|
|
|
|
|
void BLF_enable(int option);
|
|
|
|
void BLF_disable(int option);
|
2009-02-19 16:39:36 +00:00
|
|
|
|
2009-04-23 21:57:41 +00:00
|
|
|
/*
|
|
|
|
* Search the path directory to the locale files, this try all
|
|
|
|
* the case for Linux, Win and Mac.
|
2009-01-29 05:19:27 +00:00
|
|
|
*/
|
2009-04-23 21:57:41 +00:00
|
|
|
void BLF_lang_init(void);
|
2009-01-29 05:19:27 +00:00
|
|
|
|
2009-04-23 21:57:41 +00:00
|
|
|
/* Set the current locale. */
|
|
|
|
void BLF_lang_set(const char *);
|
|
|
|
|
|
|
|
/* Set the current encoding name. */
|
|
|
|
void BLF_lang_encoding_name(const char *str);
|
2009-01-29 05:19:27 +00:00
|
|
|
|
2009-02-09 07:15:22 +00:00
|
|
|
/* Add a path to the font dir paths. */
|
|
|
|
void BLF_dir_add(const char *path);
|
|
|
|
|
|
|
|
/* Remove a path from the font dir paths. */
|
|
|
|
void BLF_dir_rem(const char *path);
|
|
|
|
|
|
|
|
/* Return an array with all the font dir (this can be used for filesel) */
|
|
|
|
char **BLF_dir_get(int *ndir);
|
|
|
|
|
|
|
|
/* Free the data return by BLF_dir_get. */
|
|
|
|
void BLF_dir_free(char **dirs, int count);
|
|
|
|
|
2009-02-20 05:42:44 +00:00
|
|
|
/* font->flags. */
|
2009-03-02 05:20:48 +00:00
|
|
|
#define BLF_ROTATION (1<<0)
|
|
|
|
#define BLF_CLIPPING (1<<1)
|
2009-02-20 05:42:44 +00:00
|
|
|
|
2009-04-06 04:12:31 +00:00
|
|
|
/* font->mode. */
|
|
|
|
#define BLF_MODE_TEXTURE 0
|
|
|
|
#define BLF_MODE_BITMAP 1
|
|
|
|
|
2009-04-23 21:57:41 +00:00
|
|
|
/* font->type */
|
|
|
|
#define BLF_FONT_FREETYPE2 0
|
|
|
|
#define BLF_FONT_INTERNAL 1
|
|
|
|
|
2009-01-29 05:19:27 +00:00
|
|
|
#endif /* BLF_API_H */
|