亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? logfont.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發包(MiniGUI-Processes 運行模式)。
?? C
字號:
/*** $Id: logfont.c,v 1.23 2005/02/03 05:00:35 snig Exp $** ** logfont.c: Log fonts management.** ** Copyright (C) 2003 Feynman Software.** Copyright (C) 2000 ~ 2002 Wei Yongming.**** Current maintainer: Wei Yongming.** ** Create date: 2000/07/07 by Wei Yongming*//*** 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*//*** TODO:*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "cliprect.h"#include "gal.h"#include "internals.h"#include "ctrlclass.h"#include "dc.h"#include "sysfont.h"#include "devfont.h"#include "fontname.h"CHARSETOPS* GetCharsetOps (const char* charset_name);/************************** Exported functions ******************************/static PLOGFONT gdiCreateLogFont ( const char* type, const char* family,     const char* charset, DWORD style, int size, int rotation){    PLOGFONT log_font;    int sbc_descent, mbc_descent = 0;    char dev_family [LEN_FONT_NAME + 1];    DEVFONT* sbc_devfont, *mbc_devfont;    // is valid style?    if (style == 0xFFFFFFFF)        return INV_LOGFONT;    // is supported charset?    if (GetCharsetOps (charset) == NULL) {        return INV_LOGFONT;    }    if ((log_font = malloc (sizeof (LOGFONT))) == NULL)        return INV_LOGFONT;        log_font->style = style;#if 0    fprintf (stderr, "LogFont: style: %x\n", log_font->style);#endif    if (type) {        strncpy (log_font->type, type, LEN_FONT_NAME);        log_font->type [LEN_FONT_NAME] = '\0';    }    else        strcpy (log_font->type, FONT_TYPE_NAME_ALL);    strncpy (log_font->family, family, LEN_FONT_NAME);    log_font->family [LEN_FONT_NAME] = '\0';    strncpy (log_font->charset, charset, LEN_FONT_NAME);    log_font->charset [LEN_FONT_NAME] = '\0';    if (size > FONT_MAX_SIZE)        log_font->size = FONT_MAX_SIZE;    else if (size < FONT_MIN_SIZE)        log_font->size = FONT_MIN_SIZE;    else        log_font->size = size;    log_font->rotation = rotation;#if 0    fprintf (stderr, "log_font: %s, %s, %s, %d.\n",                    log_font->type, log_font->family, log_font->charset,                    log_font->size);#endif    sbc_devfont = GetMatchedSBDevFont (log_font);    if (sbc_devfont->font_ops->new_instance)        sbc_devfont = (*sbc_devfont->font_ops->new_instance) (log_font, sbc_devfont, TRUE);    if (sbc_devfont == NULL) {        free (log_font);        return INV_LOGFONT;    }    mbc_devfont = GetMatchedMBDevFont (log_font);    if (mbc_devfont && mbc_devfont->font_ops->new_instance)        mbc_devfont = (*mbc_devfont->font_ops->new_instance) (log_font, mbc_devfont, FALSE);    log_font->sbc_devfont = sbc_devfont;    log_font->mbc_devfont = mbc_devfont;    /*      * Adjust the logical font information     */    // family name    if (log_font->mbc_devfont) {        fontGetFamilyFromName (log_font->mbc_devfont->name, dev_family);        strncpy (log_font->family, dev_family, LEN_FONT_NAME);        log_font->family [LEN_FONT_NAME] = '\0';    }    else {        fontGetFamilyFromName (log_font->sbc_devfont->name, dev_family);        strncpy (log_font->family, dev_family, LEN_FONT_NAME);        log_font->family [LEN_FONT_NAME] = '\0';    }    // charset name    if (log_font->mbc_devfont) {        strncpy (log_font->charset,             log_font->mbc_devfont->charset_ops->name, LEN_FONT_NAME);        log_font->charset [LEN_FONT_NAME] = '\0';    }    else {        strncpy (log_font->charset,             log_font->sbc_devfont->charset_ops->name, LEN_FONT_NAME);        log_font->charset [LEN_FONT_NAME] = '\0';    }    // size    log_font->size = (*log_font->sbc_devfont->font_ops->get_font_height)            (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        int size = (*log_font->mbc_devfont->font_ops->get_font_height)            (log_font, log_font->mbc_devfont);        if (size > log_font->size)            log_font->size = size;    }    sbc_descent = (*log_font->sbc_devfont->font_ops->get_font_descent)            (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        mbc_descent = (*log_font->mbc_devfont->font_ops->get_font_descent)            (log_font, log_font->mbc_devfont);    }    log_font->size += abs (sbc_descent - mbc_descent);    return log_font;}PLOGFONT GUIAPI CreateLogFontIndirect (LOGFONT *logfont){    return gdiCreateLogFont (logfont->type, logfont->family,         logfont->charset, logfont->style, logfont->size, logfont->rotation);}PLOGFONT GUIAPI CreateLogFont (const char* type, const char* family,     const char* charset, char weight, char slant, char set_width,     char spacing, char underline, char struckout, int size, int rotation){    DWORD style;    /*    char style_name [] = {weight, slant, set_width,                           spacing, underline, struckout};    */    char style_name[6];        style_name[0] = weight;    style_name[1] = slant;    style_name[2] = set_width;    style_name[3] = spacing;    style_name[4] = underline;    style_name[5] = struckout;           if ((style = fontConvertStyle (style_name)) == 0xFFFFFFFF) {        return INV_LOGFONT;    }    return gdiCreateLogFont (type, family, charset, style, size, rotation);}PLOGFONT GUIAPI CreateLogFontByName (const char* font_name){    char type[LEN_FONT_NAME + 1];    char family[LEN_FONT_NAME + 1];    char charset[LEN_FONT_NAME + 1];    DWORD style;    int height;    if (!fontGetTypeNameFromName (font_name, type) ||            !fontGetFamilyFromName (font_name, family) ||            !fontGetCharsetFromName (font_name, charset) ||            ((height = fontGetHeightFromName (font_name)) == -1) ||            ((style = fontGetStyleFromName (font_name)) == 0xFFFFFFFF))        return NULL;    return gdiCreateLogFont (type, family, charset, style, height, 0);}void GUIAPI DestroyLogFont (PLOGFONT log_font){    LOGFONT* logfont = (PLOGFONT)log_font;    if (logfont->sbc_devfont->font_ops->delete_instance)        (*logfont->sbc_devfont->font_ops->delete_instance) (logfont->sbc_devfont);    if (logfont->mbc_devfont && logfont->mbc_devfont->font_ops->delete_instance)        (*logfont->mbc_devfont->font_ops->delete_instance) (logfont->mbc_devfont);    free (logfont);}PLOGFONT GUIAPI GetCurFont (HDC hdc){    PDC pdc;    pdc = dc_HDC2PDC(hdc);    return pdc->pLogFont;}PLOGFONT GUIAPI SelectFont (HDC hdc, PLOGFONT log_font){    PLOGFONT old;    PDC pdc;    pdc = dc_HDC2PDC(hdc);    old = pdc->pLogFont;    if (log_font == INV_LOGFONT)        pdc->pLogFont = g_SysLogFont [1] ? g_SysLogFont [1] : g_SysLogFont [0];    else        pdc->pLogFont = log_font;        return old;}void GUIAPI GetLogFontInfo (HDC hdc, LOGFONT* log_font){    memcpy (log_font, dc_HDC2PDC (hdc)->pLogFont, sizeof (LOGFONT));}void GUIAPI GetFontMetrics (LOGFONT* log_font, FONTMETRICS* font_metrics){    int sbc_value, mbc_value;        sbc_value = log_font->sbc_devfont->font_ops->get_font_height (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        mbc_value = log_font->mbc_devfont->font_ops->get_font_height (log_font, log_font->mbc_devfont);        font_metrics->font_height = MAX (sbc_value, mbc_value);    }    else {        font_metrics->font_height = sbc_value;    }    sbc_value = log_font->sbc_devfont->font_ops->get_font_ascent (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        mbc_value = log_font->mbc_devfont->font_ops->get_font_ascent (log_font, log_font->mbc_devfont);        font_metrics->ascent = MAX (sbc_value, mbc_value);    }    else {        font_metrics->ascent = sbc_value;    }    sbc_value = log_font->sbc_devfont->font_ops->get_font_descent (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        mbc_value = log_font->mbc_devfont->font_ops->get_font_descent (log_font, log_font->mbc_devfont);        font_metrics->descent = MAX (sbc_value, mbc_value);    }    else {        font_metrics->descent = sbc_value;    }    sbc_value = log_font->sbc_devfont->font_ops->get_max_width (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        mbc_value = log_font->mbc_devfont->font_ops->get_max_width (log_font, log_font->mbc_devfont);        font_metrics->max_width = MAX (sbc_value, mbc_value);    }    else {        font_metrics->max_width = sbc_value;    }    sbc_value = log_font->sbc_devfont->font_ops->get_ave_width (log_font, log_font->sbc_devfont);    if (log_font->mbc_devfont) {        mbc_value = log_font->mbc_devfont->font_ops->get_ave_width (log_font, log_font->mbc_devfont);        font_metrics->ave_width = mbc_value;    }    else {        font_metrics->ave_width = sbc_value;    }}void GUIAPI GetGlyphBitmap (LOGFONT* log_font, const unsigned char* mchar, int mchar_len,                 GLYPHBITMAP* glyph_bitmap){    DEVFONT* sbc_devfont = log_font->sbc_devfont;    DEVFONT* mbc_devfont = log_font->mbc_devfont;    DEVFONT* devfont;    if (mbc_devfont) {        int mbc_pos;        mbc_pos = (*mbc_devfont->charset_ops->pos_first_char) (mchar, mchar_len);        if (mbc_pos == 0) {            devfont = mbc_devfont;        }        else {            devfont = sbc_devfont;        }    }    else {        devfont = sbc_devfont;    }    if (devfont->font_ops->get_char_bbox) {        glyph_bitmap->bbox_x = 0;        glyph_bitmap->bbox_y = 0;        devfont->font_ops->get_char_bbox (log_font, devfont, mchar, mchar_len,                    &glyph_bitmap->bbox_x,                    &glyph_bitmap->bbox_y,                    &glyph_bitmap->bbox_w,                    &glyph_bitmap->bbox_h);    }    else {        glyph_bitmap->bbox_x = 0;        glyph_bitmap->bbox_y = devfont->font_ops->get_font_descent (log_font, devfont);        glyph_bitmap->bbox_w = devfont->font_ops->get_char_width (log_font, devfont, mchar, mchar_len);        glyph_bitmap->bbox_h = devfont->font_ops->get_font_height (log_font, devfont);    }    if (devfont->font_ops->get_char_advance) {        devfont->font_ops->get_char_advance (log_font, devfont, mchar, mchar_len,                    &glyph_bitmap->advance_x,                    &glyph_bitmap->advance_y);    }    else {        glyph_bitmap->advance_x = glyph_bitmap->bbox_w;        glyph_bitmap->advance_y = 0;    }    glyph_bitmap->bmp_size = devfont->font_ops->char_bitmap_size (log_font, devfont, mchar, mchar_len);    glyph_bitmap->bmp_pitch = (glyph_bitmap->bbox_w + 7) >> 3;    glyph_bitmap->bits = devfont->font_ops->get_char_bitmap (log_font, devfont, mchar, mchar_len);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久毛片| 亚洲乱码中文字幕综合| 国产日韩欧美精品电影三级在线| 欧美精品一区二区三区视频| 国产日韩欧美精品一区| 亚洲激情五月婷婷| 精品一区二区在线视频| av一区二区三区黑人| 欧美区视频在线观看| 国产视频在线观看一区二区三区 | 亚洲男人天堂av| 亚洲一区成人在线| 国产精品99久久久| 欧美精品自拍偷拍| 国产精品天干天干在观线| 视频在线观看一区二区三区| 国产精品一二三区| 日韩一区二区三区免费看| 国产精品美女一区二区| 日本不卡视频在线| 日本丶国产丶欧美色综合| 久久看人人爽人人| 日韩高清一区二区| 色综合中文字幕| 国产亚洲成aⅴ人片在线观看| 香蕉成人伊视频在线观看| 不卡一区二区中文字幕| 欧美岛国在线观看| 午夜电影网一区| www.欧美.com| 国产女同性恋一区二区| 另类人妖一区二区av| 欧美性猛片aaaaaaa做受| 国产精品久久久久影院色老大| 美国一区二区三区在线播放| 欧美日韩精品三区| 一区二区三区欧美在线观看| 国产a级毛片一区| 2017欧美狠狠色| 久久99精品久久久久久| 91精品国产乱| 日日夜夜免费精品| 欧美欧美午夜aⅴ在线观看| 亚洲人午夜精品天堂一二香蕉| 国产伦精品一区二区三区视频青涩| 69精品人人人人| 亚洲chinese男男1069| 在线观看日韩av先锋影音电影院| 亚洲欧洲性图库| 成人黄页在线观看| 国产精品丝袜91| 99这里只有精品| 国产精品大尺度| 91免费精品国自产拍在线不卡| 国产精品免费aⅴ片在线观看| 国产精品中文字幕一区二区三区| 欧美一区二区三区成人| 日韩av中文字幕一区二区三区 | 麻豆成人av在线| 欧美电影免费观看高清完整版在线| 日韩精品一区第一页| 欧美精品久久久久久久久老牛影院| 亚洲香肠在线观看| 欧美人体做爰大胆视频| 蜜臀av一级做a爰片久久| 欧美电影免费观看高清完整版| 国内久久精品视频| 国产亚洲一区二区三区| 国产精品99久久久久久有的能看| 国产精品丝袜91| 日本高清成人免费播放| 日韩精品久久久久久| 欧美大片日本大片免费观看| 国模套图日韩精品一区二区| 欧美精品一区二区三区在线播放 | 国产91高潮流白浆在线麻豆| 国产欧美日韩在线看| 成人黄色在线网站| 亚洲精品视频在线看| 91黄视频在线观看| 亚洲成精国产精品女| 欧美日韩中字一区| 欧美aaa在线| 欧美精品一区二区三区一线天视频 | 精品亚洲国产成人av制服丝袜 | 国产一区二区三区不卡在线观看 | 国产乱码精品1区2区3区| 中文字幕一区二区不卡| 欧美日韩情趣电影| 狠狠色丁香婷婷综合久久片| 国产精品久久夜| 欧美日韩一级视频| 国产黑丝在线一区二区三区| 亚洲欧洲日韩综合一区二区| 91精品国产综合久久久久久久久久| 国产精品综合在线视频| 亚洲欧美国产三级| www成人在线观看| 欧洲生活片亚洲生活在线观看| 久久电影网站中文字幕| 亚洲精品中文字幕乱码三区| 精品免费视频一区二区| 欧洲视频一区二区| 国产精品123区| 老汉av免费一区二区三区| 亚洲欧美综合另类在线卡通| 精品国产成人系列| 欧美日韩1234| 99久久免费国产| 国产一区不卡精品| 青青草97国产精品免费观看无弹窗版| 最新高清无码专区| 久久这里只有精品视频网| 欧美三级中文字幕| 一本在线高清不卡dvd| 国产成人免费9x9x人网站视频| 五月婷婷久久丁香| 一区二区三区丝袜| 亚洲欧美二区三区| 成人免费一区二区三区视频| 久久久久久久久久久黄色| 欧美一级欧美三级| 欧美一级片免费看| 日韩亚洲电影在线| 日韩限制级电影在线观看| 91官网在线观看| 91成人网在线| 在线欧美日韩国产| 在线视频综合导航| 欧美在线观看一区二区| 91官网在线观看| 欧美自拍丝袜亚洲| 欧美视频日韩视频在线观看| 一本久久a久久免费精品不卡| 成人动漫精品一区二区| av一区二区三区在线| 国产九色精品成人porny| 午夜精品久久久久久久| 日韩国产欧美视频| 亚洲gay无套男同| 天使萌一区二区三区免费观看| 亚洲精品视频一区| 国产精品情趣视频| 国产日产欧美一区| 亚洲女厕所小便bbb| 夜色激情一区二区| 亚洲精选一二三| 性欧美疯狂xxxxbbbb| 日韩成人精品在线观看| 日本欧美一区二区三区乱码| 美女久久久精品| 粉嫩aⅴ一区二区三区四区| av在线播放一区二区三区| 在线欧美一区二区| 欧美大片免费久久精品三p | 亚洲精品乱码久久久久久日本蜜臀| 中文字幕一区二区三区不卡在线| 亚洲精品国久久99热| 亚洲成人在线免费| 精品一区二区免费看| 成人动漫一区二区三区| 色8久久人人97超碰香蕉987| 欧美猛男超大videosgay| 欧美一区二区在线免费播放| 久久久99久久| 一级日本不卡的影视| 久久99精品久久久久久久久久久久 | 一区二区三区四区蜜桃| 另类的小说在线视频另类成人小视频在线| 国产伦精品一区二区三区免费迷| 99精品在线观看视频| 91精品国产综合久久小美女| 国产拍揄自揄精品视频麻豆| 亚洲免费在线电影| 久久精品国产秦先生| 99久久亚洲一区二区三区青草| 欧美群妇大交群中文字幕| 亚洲伊人色欲综合网| 另类小说视频一区二区| 91在线观看免费视频| 日韩免费视频一区| 一区二区三区欧美在线观看| 国产精品资源在线| 欧美精品乱码久久久久久| 国产精品伦理一区二区| 久久精品国产精品亚洲精品| 色综合久久久久综合| 国产视频不卡一区| 日本欧美肥老太交大片| 91蜜桃在线免费视频| 久久综合五月天婷婷伊人| 婷婷中文字幕综合| 一本久久a久久精品亚洲| 国产午夜亚洲精品羞羞网站| 亚洲成年人网站在线观看| 99re热视频这里只精品| 欧美激情一区二区三区在线| 男女性色大片免费观看一区二区| 色国产综合视频| 中文字幕一区二区视频|