52 #define NCBI_FONT(x) \
53 static const BitmapFontRec* const sc_##x##_ptr = &x
223 free((
void*)iter->second->name);
224 for (
int i = 0;
i < iter->second->num_chars; ++
i) {
225 if (iter->second->ch[
i]) {
226 delete [] iter->second->ch[
i]->bitmap;
227 delete [] iter->second->ch[
i];
230 delete [] iter->second->ch;
243 if (iter->first == font) {
246 }
else if (iter->first != font) {
253 (iter->first & 0xff);
254 if (this_face == face) {
263 back != sc_FontMap.begin() &&
264 forward != sc_FontMap.end(); ) {
265 if (back != sc_FontMap.begin()) {
267 (back->first & 0xff);
268 if (this_face == face) {
273 if (forward != sc_FontMap.end()) {
276 (forward->first & 0xff);
277 if (this_face == face) {
278 return forward->second;
287 "OpenGL bitmap font font not found");
293 if (c < font_ptr->
first ||
297 return font_ptr->
ch[c - font_ptr->
first];
304 return ch? ch->
height : 0.0;
334 for (
int charidx = 0; charidx < source_font->
num_chars; ++charidx) {
371 int row_len = (orig_ch->
width + 7) / 8;
372 int new_row_len = (orig_ch->
height + 7) / 8;
373 GLubyte*
data =
new GLubyte[new_row_len * orig_ch->
width];
374 memset(
data, 0, new_row_len * orig_ch->
width * sizeof (GLubyte));
383 for(j = 0; j < new_row_len; j++) {
384 GLubyte *
b =
data +
i * new_row_len + j;
388 int max_k =
min(8, new_char->
width - j*8);
389 for(k = 0; k < max_k; k++){
390 int src_row = orig_ch->
height - j * 8 - k - 1;
392 int src_byte = src_bit / 8 + row_len * src_row;
393 int src_bit_off = src_bit % 8;
394 if(orig_ch->
bitmap[src_byte] & (0x80 >> src_bit_off)){
415 int row_len = (orig_ch->
width + 7) / 8;
416 GLubyte*
data =
new GLubyte[row_len * orig_ch->
height];
417 memset(
data, 0, row_len * orig_ch->
height * sizeof (GLubyte));
425 for(j = 0; j < row_len; j++) {
426 GLubyte *
b =
data +
i * row_len + j;
430 int max_k =
min(8, new_char->
width - j*8);
431 for(k = 0; k < max_k; k++){
432 int src_row = orig_ch->
height -
i - 1;
433 int src_bit = orig_ch->
width - j * 8 - k - 1;
434 int src_byte = src_bit / 8 + row_len * src_row;
435 int src_bit_off = src_bit % 8;
436 if(orig_ch->
bitmap[src_byte] & (0x80 >> src_bit_off)){
462 int row_len = (orig_ch->
width + 7) / 8;
463 int new_row_len = (orig_ch->
height + 7) / 8;
464 GLubyte*
data =
new GLubyte[new_row_len * orig_ch->
width];
470 memset(
data, 0, new_row_len * new_char->
height * sizeof (GLubyte));
473 for(j = 0; j < new_row_len; j++) {
474 GLubyte *
b =
data +
i * new_row_len + j;
478 int max_k =
min(8, new_char->
width - j*8);
479 for(k = 0; k < max_k; k++){
480 int src_row = j * 8 + k;
481 int src_bit = orig_ch->
width -
i - 1;
482 int src_byte = src_bit / 8 + row_len * src_row;
483 int src_bit_off = src_bit % 8;
484 if(orig_ch->
bitmap[src_byte] & (0x80 >> src_bit_off)){
495 new_char->
xorig = orig_ch->
yorig + (GLfloat)cap_ht;
532 chars[charidx] = new_char;
536 const char* name =
NULL;
539 name =
strdup((
string(source_font->
name) +
"-rot90c").c_str());
543 name =
strdup((
string(source_font->
name) +
"-rot90b").c_str());
547 name =
strdup((
string(source_font->
name) +
"-rot180c").c_str());
551 name =
strdup((
string(source_font->
name) +
"-rot180b").c_str());
555 name =
strdup((
string(source_font->
name) +
"-rot270c").c_str());
559 name =
strdup((
string(source_font->
name) +
"-rot270b").c_str());
568 new_font->
name = name;
640 return ch ? ch->
yorig : 0.0;
646 for (
int charidx = 0; charidx < font_ptr->
num_chars; ++charidx) {
656 : m_Font(eBitmap8x13)
657 , m_FontRotate(eFontRotate_0)
666 , m_FontRotate(eFontRotate_0)
785 faces.push_back(iter->second);
795 sizes.push_back(iter->second);
803 if (iter != sc_FaceMap.end()) {
813 if (
str == iter->second) {
825 if (iter != sc_SizeMap.end()) {
835 if (
str == iter->second) {
862 string s_face, s_size;
872 if(face != 0 &&
size != 0) {
901 template<
class TOutputMethod>
911 glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes);
912 glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst);
913 glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength);
914 glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows);
915 glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels);
916 glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
918 glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE);
919 glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
920 glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
921 glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
922 glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
923 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
929 glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes);
930 glPixelStorei(GL_UNPACK_LSB_FIRST, lsbfirst);
931 glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength);
932 glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows);
933 glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels);
934 glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
954 glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
956 for (
const char* p =
m_Text; p && *p; ++p) {
964 x_adv = ch->
width + 1.0;
973 x_adv = -ch->
width - 1.0;
991 y_adv = -ch->
height - 1.0;
999 (GLfloat)x_orig, (GLfloat)y_orig,
1000 (GLfloat)x_adv, (GLfloat)y_adv, ch->
bitmap);
1019 glGetIntegerv(GL_RENDER_MODE, &
mode);
1029 glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
1030 glGetFloatv(GL_CURRENT_RASTER_COLOR, col);
1034 typedef vector<float> TFList;
1037 ITERATE (TFList, it, vectext) {
1059 const vector<CRgbaColor*>*
colors,
1084 for (
const char* p =
m_Text; p && *p; ++p) {
1093 off_x = ch->
width * k_x;
1094 off_y = ch->
height * k_y;
1187 for (
const char* p =
m_Text; p && *p; ++p) {
1188 if (*p < m_FontPtr->
first ||
1205 glGetFloatv(GL_CURRENT_RASTER_POSITION, pos);
1206 glGetFloatv(GL_CURRENT_RASTER_COLOR, col);
1210 typedef vector<float> TFList;
1213 ITERATE (TFList, it, vectext) {
1233 const vector<CRgbaColor*>*
colors,
1237 glGetIntegerv(GL_RENDER_MODE, &
mode);
1244 scale_x, scale_y, font_ptr);
1324 ras_x = x + (w - text_wid);
1327 ras_x = x + (w - text_wid) * 0.5;
1335 ras_y = y + (h - text_ht);
1340 ras_y = y + (h - text_ht) * 0.5;
1353 ras_y = y + (h - text_wid);
1356 ras_y = y + (h - text_wid) * 0.5;
1366 ras_x = x + w - text_ht;
1370 ras_x = x - text_ht;
1378 ras_x = x + (w + text_ht) * 0.5;
1380 ras_x = x + (w - text_ht) * 0.5;
1393 ras_x = x + text_wid;
1396 ras_x = x + w - (w - text_wid) * 0.5;
1402 ras_y = y - text_ht;
1411 ras_y = y + (h - text_ht);
1417 ras_y = y + (h + text_ht) * 0.5;
1419 ras_y = y + (h - text_ht) * 0.5;
1432 ras_y = y + text_wid;
1435 ras_y = y + (h + text_wid) * 0.5f;
1443 ras_x = x + text_ht;
1449 ras_x = x + (w - text_ht);
1457 ras_x = x + (w - text_ht) * 0.5f;
1459 ras_x = x + (w + text_ht) * 0.5f;
1511 const char*
text,
int text_len)
const
1522 static const char* sc_caps =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
1525 for (
const char* p = sc_caps; p && *p; ++p) {
1529 max_ht =
max(max_ht, ht);
1542 for (
int i = font_ptr->
first; i < font_ptr->num_chars; ++
i) {
1546 max_ht =
max(max_ht, ht);
1560 for (
int i = font_ptr->
first; i < font_ptr->num_chars; ++
i) {
1567 return wid / float(
count);
1577 for (
int i = font_ptr->
first; i < font_ptr->num_chars; ++
i) {
1593 const char* p =
text;
1594 for ( ; text_len && p && *p; ++p, --text_len) {
1615 const char *p =
text;
1616 for( ; text_len && p && *p; ++p, --text_len) {
1654 static const char* sc_ellipsis =
"...";
1655 const char* ellip =
NULL;
1657 const char* end_pos =
text;
1666 end_pos =
text + pos;
1675 ellip = sc_ellipsis;
1677 if (end_pos >
text) {
1687 for ( ; end_pos && *end_pos && w >= 0; ++end_pos) {
1702 if (end_pos <
text) {
1712 return (
int)(end_pos -
text);
1721 bool bNegative = Number < 0;
1722 Number =
abs(Number);
1724 string s_number, s_postfix;
1728 if(Number != 0 && b_postfix) {
1729 int Rest = Number % 1000;
1730 for( i_postfix = 0; Rest == 0; i_postfix++) {
1731 Number = Number / 1000;
1732 Rest = Number % 1000;
1738 char sTemplGroup[] =
" %.3d";
1739 sTemplGroup[0] = cSep;
1740 char sTemplLast[] =
"%d";
1744 int Rest = Number % 1000;
1745 Number = Number / 1000;
1746 sprintf(
S, Number ? sTemplGroup : sTemplLast, Rest);
1747 s_number =
string(
S) + s_number;
1749 s_number += s_postfix;
1752 s_number =
"-" + s_number;
1760 int MaxDigits = (
int) ceil(
log10((
double) Number));
1761 int nSep = (MaxDigits - 1) / 3;
1762 return MaxDigits + nSep;
1768 double max_dig_w = 0;
1770 for(
char c =
'0'; c <=
'9'; c++) {
1772 max_dig_w =
max(max_dig_w, char_w);
1776 double mod =
abs(max_num);
1778 int commas_count = (digits_count - 1) / 3;
1781 double w = digits_count * max_dig_w + commas_count * comma_w;
1791 glRasterPos2d(x, y);
1796 glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, &valid);
1810 GLdouble modelview_matrix[16];
1811 GLdouble projection_matrix[16];
1814 glGetDoublev(GL_MODELVIEW_MATRIX, modelview_matrix);
1815 glGetDoublev(GL_PROJECTION_MATRIX, projection_matrix);
1816 glGetIntegerv(GL_VIEWPORT, viewport);
1821 GLdouble wx, wy, wz;
1823 modelview_matrix, projection_matrix, viewport,
1829 GLdouble unprojected_center_x = 0;
1830 GLdouble unprojected_center_y = 0;
1831 GLdouble unprojected_center_z = 0;
1832 GLdouble centerx = viewport[0] + (viewport[2]-viewport[0])/2.0;
1833 GLdouble centery = viewport[1] + (viewport[3]-viewport[1])/2.0;
1835 modelview_matrix, projection_matrix, viewport,
1836 &unprojected_center_x, &unprojected_center_y, &unprojected_center_z);
1839 glRasterPos2d(unprojected_center_x, unprojected_center_y);
1844 GLfloat deltax = (GLfloat)(wx-centerx);
1845 GLfloat deltay = (GLfloat)(wy-centery);
1848 deltax, deltay,
NULL);
const BitmapFontRec *const & m_FontPtr
CFeedbackTextArrayPrinter(const char *text, TModelUnit x, TModelUnit y, TModelUnit dx, TModelUnit dy, TModelUnit scale_x, TModelUnit scale_y, const BitmapFontRec *const &font_ptr)
class CRgbaColor provides a simple abstraction for managing colors.
class CStaticArrayMap<> is an array adaptor that provides an STLish interface to statically-defined a...
TBase::const_iterator const_iterator
const vector< CRgbaColor * > * m_Colors
CTextArrayPrinter(const char *text, const vector< CRgbaColor * > *colors, TModelUnit x, TModelUnit y, TModelUnit dx, TModelUnit dy, TModelUnit scale_x, TModelUnit scale_y, CGlBitmapFont *font)
const BitmapFontRec *const m_FontPtr
const CGlBitmapFont::EFontRotate m_FontRotate
CTextPrinter(const char *text, const BitmapFontRec *font_ptr, CGlBitmapFont::EFontRotate rot, bool condensed=false)
container_type::iterator iterator
const_iterator end() const
const_iterator find(const key_type &key) const
static const Colors colors
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static const char * str(char *buf, int n)
static const BitmapFontRec *const sc_ncbi_fixed_18_ptr
static const BitmapFontRec *const sc_ncbi_lucida_18_ptr
static const BitmapFontRec *const sc_ncbi_lucida_8_ptr
static const BitmapFontRec *const sc_ncbi_helvetica_10_ptr
static const BitmapFontRec *const sc_ncbi_lucida_12_ptr
static TModelUnit s_GetCharBitmapWidth(char c, const BitmapFontRec *font_ptr)
static TModelUnit s_GetCharAdvance(char c, const BitmapFontRec *font_ptr)
static const BitmapFontRec *const sc_ncbi_helvetica_12_ptr
map< SRotateKey, const BitmapFontRec *, SRotateKeyLess > TRotatedFontCache
static const BitmapFontRec *const sc_ncbi_times_12_ptr
static const BitmapFontRec *const sc_ncbi_fixed_8_ptr
static const BitmapFontRec *const sc_ncbi_courier_8_ptr
static const BitmapFontRec *const s_FindFontPtr(CGlBitmapFont::EFont font)
static const BitmapFontRec *const sc_ncbi_clean_6_ptr
static const BitmapFontRec *const sc_ncbi_clean_16_ptr
SStaticPair< CGlBitmapFont::EFont, const BitmapFontRec * > TFontPair
static const BitmapFontRec *const sc_ncbi_helvetica_14_ptr
static const BitmapFontRec *const sc_ncbi_clean_12_ptr
static const char * kPostfixes[]
static SRotatedFontCachePurger s_FontCachePurger
static const BitmapFontRec *const sc_ncbi_helvetica_6_ptr
static const BitmapFontRec *const sc_ncbi_helvetica_18_ptr
static const BitmapFontRec *const sc_ncbi_clean_10_ptr
static TModelUnit s_GetCharDescender(char c, const BitmapFontRec *font_ptr)
static const BitmapFontRec *const sc_ncbi_times_8_ptr
static const BitmapFontRec *const sc_ncbi_helvetica_24_ptr
static const BitmapFontRec *const sc_ncbi_times_10_ptr
static const BitmapFontRec *const sc_ncbi_courier_20_ptr
static const BitmapFontRec *const sc_ncbi_lucida_6_ptr
CStaticPairArrayMap< CGlBitmapFont::EFont, const BitmapFontRec * > TFontMap
static const BitmapFontRec *const sc_ncbi_times_14_ptr
static const BitmapFontRec *const sc_ncbi_helvetica_8_ptr
static const BitmapFontRec *const sc_ncbi_times_24_ptr
CStaticPairArrayMap< CGlBitmapFont::EFontFace, const char * > TFaceMap
static const BitmapFontRec *const s_GetFont(CGlBitmapFont::EFont font, CGlBitmapFont::EFontRotate rot)
static TModelUnit s_GetCharWidth(char c, const BitmapFontRec *font_ptr)
static const BitmapFontRec *const sc_ncbi_lucida_24_ptr
DEFINE_STATIC_ARRAY_MAP(TFontMap, sc_FontMap, sc_Fonts)
SStaticPair< CGlBitmapFont::EFontFace, const char * > TFaceElem
static const BitmapFontRec *const sc_ncbi_courier_14_ptr
static const BitmapFontRec *const sc_ncbi_times_18_ptr
void DoTextOut(TOutputMethod &method)
static const BitmapCharRec * s_GetCharPtr(const BitmapFontRec *font_ptr, int c)
static const BitmapFontRec *const sc_ncbi_courier_18_ptr
static const BitmapFontRec *const sc_ncbi_helvetica_20_ptr
CStaticPairArrayMap< CGlBitmapFont::EFontSize, const char * > TSizeMap
static const BitmapFontRec *const sc_ncbi_fixed_10_ptr
static const BitmapFontRec *const sc_ncbi_lucida_20_ptr
static const BitmapFontRec *const sc_ncbi_clean_15_ptr
static const BitmapFontRec *const sc_ncbi_fixed_12_ptr
static const BitmapFontRec *const sc_ncbi_courier_10_ptr
static const BitmapFontRec *const sc_ncbi_clean_8_ptr
static const BitmapFontRec *const sc_ncbi_lucida_14_ptr
static const TSizeElem sc_SizeTagArray[]
static const BitmapFontRec *const sc_ncbi_courier_24_ptr
static const BitmapFontRec *const sc_ncbi_clean_13_ptr
SStaticPair< CGlBitmapFont::EFontSize, const char * > TSizeElem
static const BitmapFontRec *const sc_ncbi_courier_6_ptr
static const BitmapFontRec *const sc_ncbi_times_6_ptr
static const TFaceElem sc_FaceTagArray[]
#define NCBI_FONT(x)
Standard non-rotated fonts; the explicit sc_foo_ptr business works around a bug in ICC 9,...
static TModelUnit s_GetFontDescender(const BitmapFontRec *font_ptr)
static const BitmapFontRec *const sc_ncbi_courier_12_ptr
static TRotatedFontCache s_RotatedCache
static TModelUnit s_GetCapHeight(const BitmapFontRec *font_ptr)
static const BitmapFontRec *const sc_ncbi_fixed_14_ptr
static const BitmapFontRec *const sc_ncbi_times_20_ptr
static const TFontPair sc_Fonts[]
static const BitmapFontRec *const sc_ncbi_lucida_10_ptr
static const BitmapFontRec * s_CreateRotatedFont(const BitmapFontRec *source_font, CGlBitmapFont::EFontRotate rot)
create a rotated font
static const BitmapFontRec *const sc_ncbi_fixed_20_ptr
static const BitmapFontRec *const sc_ncbi_clean_14_ptr
const BitmapFontRec ncbi_lucida_6
const BitmapFontRec ncbi_courier_20
const BitmapFontRec ncbi_clean_13
const BitmapFontRec ncbi_lucida_24
const BitmapFontRec ncbi_courier_12
const BitmapFontRec ncbi_fixed_8
const BitmapFontRec ncbi_courier_14
const BitmapFontRec ncbi_helvetica_8
const BitmapFontRec ncbi_clean_16
const BitmapFontRec ncbi_clean_6
const BitmapFontRec ncbi_fixed_10
const BitmapFontRec ncbi_clean_12
const BitmapFontRec ncbi_clean_14
const BitmapFontRec ncbi_helvetica_20
const BitmapFontRec ncbi_clean_15
const BitmapFontRec ncbi_fixed_18
const BitmapFontRec ncbi_fixed_20
const BitmapFontRec ncbi_helvetica_10
const BitmapFontRec ncbi_times_14
const BitmapFontRec ncbi_times_18
const BitmapFontRec ncbi_lucida_18
const BitmapFontRec ncbi_courier_6
const BitmapFontRec ncbi_fixed_14
const BitmapFontRec ncbi_helvetica_6
const BitmapFontRec ncbi_times_24
const BitmapFontRec ncbi_lucida_20
const BitmapFontRec ncbi_helvetica_12
const BitmapFontRec ncbi_helvetica_14
const BitmapFontRec ncbi_lucida_12
const BitmapFontRec ncbi_courier_8
const BitmapFontRec ncbi_courier_24
const BitmapFontRec ncbi_courier_18
const BitmapFontRec ncbi_clean_10
const BitmapFontRec ncbi_lucida_8
const BitmapFontRec ncbi_times_6
const BitmapFontRec ncbi_lucida_10
const BitmapFontRec ncbi_times_20
const BitmapFontRec ncbi_times_10
const BitmapFontRec ncbi_lucida_14
const BitmapFontRec ncbi_times_12
const BitmapFontRec ncbi_helvetica_18
const BitmapFontRec ncbi_courier_10
const BitmapFontRec ncbi_helvetica_24
const BitmapFontRec ncbi_times_8
const BitmapFontRec ncbi_clean_8
const BitmapFontRec ncbi_fixed_12
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define NCBI_THROW2(exception_class, err_code, message, extra)
Throw exception with extra parameter.
int gluProjectX(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz)
static TModelUnit GetMaxWidth(int max_num, const CGlBitmapFont &font)
returns minimal space sufficient to render any number in the range [0, max_num].
bool IsCondensed(void) const
static void SetRasterPosSafe(TModelUnit x, TModelUnit y)
static string SizeToString(EFontSize size)
static EFontSize SizeFromInt(int i)
virtual void TextOut(const char *text) const
string Truncate(const char *, TModelUnit w, ETruncate trunc=eTruncate_Ellipsis) const
static void GetAllSizes(vector< string > &sizes)
void SetFontSize(EFontSize size)
int x_Truncate(const char *text, TModelUnit w, ETruncate trunc, string *str=NULL) const
EFontRotate m_FontRotate
The font - combination of face and size.
static string FaceToString(EFontFace face)
TModelUnit GetAdvance(char c) const
void SetFontRotate(EFontRotate rot)
static int GetCharsCount(int number)
returns number of characters in symbolic representation of the given number including non-digit separ...
static vector< float > EncodeText(GLfloat pos[4], const CRgbaColor &color, const char *text, size_t length)
static string FormatSeparatedNumber(int number, bool b_postfix=false)
virtual TModelUnit GetMetric(EMetric metric, const char *text_start=NULL, int len=-1) const
virtual TModelUnit TextHeight(void) const
compute the height of a string
static EFontFace FaceFromString(const string &str)
EFontRotate GetFontRotate(void) const
EFontFace GetFontFace() const
const void * GetFontPtr() const
virtual TModelUnit TextWidth(const char *text) const
compute the length of a null-terminated string
void FromString(const string &value)
bool m_Condensed
rotation state of the font
void glColorC(const CRgbaColor &color)
CGlBitmapFont & operator=(const CGlBitmapFont &)
void ArrayTextOut(TModelUnit x, TModelUnit y, TModelUnit dx, TModelUnit dy, const char *text, const vector< CRgbaColor * > *colors=NULL, TModelUnit scale_x=1.0f, TModelUnit scale_y=1.0f) const
prints array of characters in positions (x + i*dx, y + i*dy) where "i" is index of a character in the...
static EFontSize SizeFromString(const string &str)
void SetFontFace(EFontFace face)
void SetCondensed(bool condensed)
EFontSize GetFontSize() const
virtual TModelUnit GetFontDescender() const
int gluUnProjectX(GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz)
static void GetAllFaces(vector< string > &faces)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static bool SplitInTwo(const CTempString str, const CTempString delim, string &str1, string &str2, TSplitFlags flags=0)
Split a string into two pieces using the specified delimiters.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string.
unsigned int
A callback function used to compare two keys in a database.
static void text(MDB_val *v)
const struct ncbi::grid::netcache::search::fields::SIZE size
const GenericPointer< typename T::ValueType > T2 value
static const BitmapCharRec *const chars[]
const BitmapCharRec *const * ch
bool operator()(const SRotateKey &rk1, const SRotateKey &rk2) const
rotated versions of the above we store a cache of these that is generated on the fly these fonts are ...
const BitmapFontRec * font
non-rotated font
CGlBitmapFont::EFontRotate rot
rotation type
~SRotatedFontCachePurger()
Template structure SStaticPair is simlified replacement of STL pair<> Main reason of introducing this...