⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 natfont.cc

📁 gcc的组建
💻 CC
字号:
/* Copyright (C) 2000, 2003  Free Software Foundation   This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License.  Please consult the file "LIBGCJ_LICENSE" fordetails.  */#include <X11/Xlib.h>#include <gcj/cni.h>#include <gnu/gcj/RawData.h>#include <java/lang/String.h>#include <gnu/gcj/xlib/Display.h>#include <gnu/gcj/xlib/Font.h>#include <gnu/gcj/xlib/XException.h>gnu::gcj::RawData* gnu::gcj::xlib::Font::loadFontImpl(Display* display,						  jstring lfdNamePattern){  ::Display* dpy = (::Display*) display->display;  int len = JvGetStringUTFLength(lfdNamePattern);  char cName[len+1];  JvGetStringUTFRegion(lfdNamePattern, 0, lfdNamePattern->length(),		       cName);  cName[len] = '\0';  XFontStruct* fontStruct = XLoadQueryFont(dpy, cName);  if (fontStruct == 0)    {      throw new XException(JvNewStringLatin1("font not found"));    }  return reinterpret_cast<gnu::gcj::RawData*>(fontStruct);}jint gnu::gcj::xlib::Font::getXIDFromStruct(gnu::gcj::RawData* structure){  XFontStruct* fontStruct = (XFontStruct*) structure;  return fontStruct->fid;}jint gnu::gcj::xlib::Font::getMaxAscent(){  XFontStruct* fontStruct = (XFontStruct*) structure;  return fontStruct->max_bounds.ascent+1;   // +1 to include the baseline}jint gnu::gcj::xlib::Font::getMaxDescent(){  XFontStruct* fontStruct = (XFontStruct*) structure;  return fontStruct->max_bounds.descent-1;  // -1 to exclude the baseline}jint gnu::gcj::xlib::Font::getAscent(){  XFontStruct* fontStruct = (XFontStruct*) structure;  jint returnValue = fontStruct->ascent;  if (fontStruct->min_byte1==0 && fontStruct->min_char_or_byte2<=(unsigned)'O')    returnValue = fontStruct        ->per_char[(unsigned)'O'-fontStruct->min_char_or_byte2]        .ascent;  return returnValue+1;  // +1 to include the baseline}jint gnu::gcj::xlib::Font::getDescent(){  XFontStruct* fontStruct = (XFontStruct*) structure;  jint returnValue = fontStruct->descent;  if (fontStruct->min_byte1==0 && fontStruct->min_char_or_byte2<=(unsigned)'y')    returnValue = fontStruct        ->per_char[(unsigned)'y'-fontStruct->min_char_or_byte2]        .descent;  return returnValue-1;  // -1 to exclude the baseline}jint gnu::gcj::xlib::Font::getStringWidth(java::lang::String* text){  XFontStruct* fontStruct = (XFontStruct*) structure;    // FIXME: Convert to the character set used in the font, which may  // or may not be unicode. For now, treat everything as 16-bit and  // use character codes directly, which should be OK for unicode or  // 8-bit ascii fonts.  jint length = text->length();  jchar* txt = JvGetStringChars(text);  XChar2b xwchars[length];  for (int i=0; i<length; i++)    {      XChar2b* xc = &(xwchars[i]);      jchar jc = txt[i];      xc->byte1 = (jc >> 8) & 0xff;      xc->byte2 = jc & 0xff;    }  return XTextWidth16(fontStruct, xwchars, length);}void gnu::gcj::xlib::Font::finalize(){  if (structure != 0)    {      ::Display* dpy = (::Display*) display->display;      XFontStruct* fontStruct = (XFontStruct*) structure;      int result = XFreeFont(dpy, fontStruct);      if (result == BadFont) 	throw new XException(display, result);            structure = 0; xid = 0;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -