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

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

?? devfont.c

?? miniucgui1.30版本的源碼
?? C
字號:
/*** $Id: devfont.c,v 1.20 2003/09/04 02:40:36 weiym Exp $** ** defont.c: Device fonts management.**** Copyright (C) 2003 Feynman Software.** Copyright (C) 2000 ~ 2002 Wei Yongming.**** Current maintainer: Wei Yongming.** ** Create Date: 2000/07/07*//*** 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*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "common.h"#include "minigui.h"#include "gdi.h"#include "sysfont.h"#include "charset.h"#include "devfont.h"#include "fontname.h"#include "rawbitmap.h"#include "varbitmap.h"#ifdef _LITE_VERSIONstatic int init_count = 0;BOOL GUIAPI InitVectorialFonts (void){    if (init_count > 0)       goto success;#ifdef _TTF_SUPPORT    if (!InitFreeTypeFonts ()) {        fprintf (stderr,             "GDI: Can not initialize TrueType fonts!\n");        return FALSE;    }#endif#ifdef _TYPE1_SUPPORT    if (!InitType1Fonts ()) {        fprintf (stderr,             "GDI: Can not initialize Type1 fonts!\n");        goto error;    }#endifsuccess:    init_count ++;    return TRUE;error:#ifdef _TTF_SUPPORT    TermFreeTypeFonts ();#endif    return FALSE;}void GUIAPI TermVectorialFonts (void){    init_count --;    if (init_count != 0)        return;#ifdef _TYPE1_SUPPORT	TermType1Fonts();#endif#ifdef _TTF_SUPPORT    TermFreeTypeFonts ();#endif}#endif /* _LITE_VERSION *//**************************** Global data ************************************/static DEVFONT* sb_dev_font_head;static DEVFONT* mb_dev_font_head;static int nr_sb_dev_fonts;static int nr_mb_dev_fonts;#define devfontAddSBCDevFont(head, new)         \{                                               \    if (head == NULL)                           \        head = new;                             \    else {                                      \        DEVFONT* tail;                          \        tail = head;                            \        while (tail->sbc_next) tail = tail->sbc_next;   \        tail->sbc_next = new;                       \    }                                           \                                                \    new->sbc_next = NULL;                           \}#define devfontAddMBCDevFont(head, new)         \{                                               \    if (head == NULL)                           \        head = new;                             \    else {                                      \        DEVFONT* tail;                          \        tail = head;                            \        while (tail->mbc_next) tail = tail->mbc_next;   \        tail->mbc_next = new;                       \    }                                           \                                                \    new->mbc_next = NULL;                           \}void AddSBDevFont (DEVFONT* dev_font){    devfontAddSBCDevFont (sb_dev_font_head, dev_font);    dev_font->style = fontGetStyleFromName (dev_font->name);    nr_sb_dev_fonts ++;}void AddMBDevFont (DEVFONT* dev_font){    devfontAddMBCDevFont (mb_dev_font_head, dev_font);    dev_font->style = fontGetStyleFromName (dev_font->name);    nr_mb_dev_fonts ++;}void ResetDevFont (void){    sb_dev_font_head = mb_dev_font_head = NULL;    nr_sb_dev_fonts = 0;    nr_mb_dev_fonts = 0;}#define MATCHED_TYPE        0x01#define MATCHED_FAMILY      0x02#define MATCHED_CHARSET     0x04DEVFONT* GetMatchedSBDevFont (LOGFONT* log_font){    DEVFONT* dev_font;    int i;    BYTE* match_bits = alloca (nr_sb_dev_fonts);    char charset_req [LEN_FONT_NAME + 1];    int min_error;    DEVFONT* matched_font;    // is charset requested is a single byte charset?    if (GetCharsetOps (log_font->charset)->bytes_maxlen_char > 1) {        fontGetCharsetFromName (g_SysLogFont[0]->sbc_devfont->name, charset_req);    }    else        strcpy (charset_req, log_font->charset);            i = 0;    dev_font = sb_dev_font_head;    while (dev_font) {        int type_req;        char family [LEN_FONT_NAME + 1];                // clear match_bits first.        match_bits [i] = 0;        // does match this font type?        type_req = fontConvertFontType (log_font->type);        if (type_req == FONT_TYPE_ALL)            match_bits [i] |= MATCHED_TYPE;        else if (type_req == fontGetFontTypeFromName (dev_font->name))            match_bits [i] |= MATCHED_TYPE;        // does match this family?        fontGetFamilyFromName (dev_font->name, family);        if (strcasecmp (family, log_font->family) == 0) {#if 0            fprintf (stderr, "family: %s, requested: %s; ", family, log_font->family);#endif            match_bits [i] |= MATCHED_FAMILY;        }        // does match this charset         if (dev_font->charset_ops == GetCharsetOps (charset_req)) {#if 0            fprintf (stderr, "charset: %s, requested: %s.\n", dev_font->charset_ops->name, charset_req);#endif            match_bits [i] |= MATCHED_CHARSET;        }#if 0        else {            if (fontGetCompatibleCharsetFromName (dev_font->name, charset)                    && GetCharsetOps (charset) == GetCharsetOps (charset_req))                match_bits [i] |= MATCHED_CHARSET;        }#endif        // FIXME: ignore style        dev_font = dev_font->sbc_next;        i ++;    }    min_error = FONT_MAX_SIZE;    matched_font = NULL;    dev_font = sb_dev_font_head;    for (i = 0; i < nr_sb_dev_fonts; i++) {        int error;        if ((match_bits [i] & MATCHED_TYPE)                && (match_bits [i] & MATCHED_FAMILY)                && (match_bits [i] & MATCHED_CHARSET)) {            error = abs (log_font->size -                     (*dev_font->font_ops->get_font_size) (log_font, dev_font,                                                           log_font->size));            if (min_error > error) {                min_error = error;                matched_font = dev_font;            }        }        dev_font = dev_font->sbc_next;    }    if (matched_font) {#if 0        fprintf (stderr, "matched font: %s\n", matched_font->name);#endif        return matched_font;    }    // check charset here.    min_error = FONT_MAX_SIZE;    dev_font = sb_dev_font_head;    for (i = 0; i < nr_sb_dev_fonts; i++) {        int error;        if (match_bits [i] & MATCHED_CHARSET) {            error = abs (log_font->size -                     (*dev_font->font_ops->get_font_size) (log_font, dev_font, log_font->size));            if (min_error > error) {                min_error = error;                matched_font = dev_font;            }        }        dev_font = dev_font->sbc_next;    }#if 0        fprintf (stderr, "select a font: %s\n", matched_font->name);#endif    return matched_font;}DEVFONT* GetMatchedMBDevFont (LOGFONT* log_font){    DEVFONT* dev_font;    int i;    BYTE* match_bits = alloca (nr_mb_dev_fonts);    char charset_req [LEN_FONT_NAME + 1];    int min_error;    DEVFONT* matched_font;    // is charset requested is a multiple-byte charset?    if (GetCharsetOps (log_font->charset)->bytes_maxlen_char < 2)        return NULL;    strcpy (charset_req, log_font->charset);            i = 0;    dev_font = mb_dev_font_head;    while (dev_font) {        int type_req;        char family [LEN_FONT_NAME + 1];                // clear match_bits first.        match_bits [i] = 0;        // does match this font type?        type_req = fontConvertFontType (log_font->type);        if (type_req == FONT_TYPE_ALL)            match_bits [i] |= MATCHED_TYPE;        else if (type_req == fontGetFontTypeFromName (dev_font->name))            match_bits [i] |= MATCHED_TYPE;        // does match this family?        fontGetFamilyFromName (dev_font->name, family);        if (strcasecmp (family, log_font->family) == 0) {#if 0            fprintf (stderr, "family: %s, requested: %s; ", family, log_font->family);#endif            match_bits [i] |= MATCHED_FAMILY;        }        // does match this charset         if (dev_font->charset_ops == GetCharsetOps (charset_req)) {#if 0            fprintf (stderr, "charset: %s, requested: %s\n", dev_font->charset_ops->name, charset_req);#endif            match_bits [i] |= MATCHED_CHARSET;        }        // FIXME: ignore style        dev_font = dev_font->mbc_next;        i ++;    }    matched_font = NULL;    min_error = FONT_MAX_SIZE;    dev_font = mb_dev_font_head;    for (i = 0; i < nr_mb_dev_fonts; i++) {        int error;        if ((match_bits [i] & MATCHED_TYPE)                && (match_bits [i] & MATCHED_FAMILY)                && (match_bits [i] & MATCHED_CHARSET)) {            error = abs (log_font->size -                     (*dev_font->font_ops->get_font_size) (log_font, dev_font,                                                           log_font->size));            if (min_error > error) {                min_error = error;                matched_font = dev_font;            }        }        dev_font = dev_font->mbc_next;    }    if (matched_font) {#if 0        fprintf (stderr, "matched font: %s\n", matched_font->name);#endif        return matched_font;    }    min_error = FONT_MAX_SIZE;    dev_font = mb_dev_font_head;    for (i = 0; i < nr_mb_dev_fonts; i++) {        int error;        if (match_bits [i] & MATCHED_CHARSET) {            error = abs (log_font->size -                     (*dev_font->font_ops->get_font_size) (log_font, dev_font,                                                           log_font->size));            if (min_error > error) {                min_error = error;                matched_font = dev_font;            }        }        dev_font = dev_font->mbc_next;    }#if 0        fprintf (stderr, "select a font: %s\n", matched_font->name);#endif    return matched_font;}#ifdef _DEBUGvoid dumpDevFonts (void){    int count = 0;    DEVFONT* devfont;    fprintf (stderr, "============= SBDevFonts ============\n");    devfont = sb_dev_font_head;    while (devfont) {        fprintf (stderr, "  %d: %s, charsetname: %s, style: %#lx\n",                         count,                         devfont->name, devfont->charset_ops->name, devfont->style);        devfont = devfont->sbc_next;        count++;    }    fprintf (stderr, "========== End of SBDevFonts =========\n");    fprintf (stderr, "\n============= MBDevFonts ============\n");    devfont = mb_dev_font_head;    while (devfont) {        fprintf (stderr, "  %d: %s, charsetname: %s, style: %#lx\n",                         count,                         devfont->name, devfont->charset_ops->name, devfont->style);        devfont = devfont->mbc_next;        count++;    }    fprintf (stderr, "========== End of MBDevFonts =========\n");}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频精品含羞草妖精| 精品国产亚洲在线| 国产一区二区在线观看免费| 亚洲乱码精品一二三四区日韩在线| 日韩午夜激情免费电影| 精品视频一区二区三区免费| 日韩电影免费一区| 艳妇臀荡乳欲伦亚洲一区| 亚洲欧美综合在线精品| 国产午夜一区二区三区| 26uuu另类欧美| 2020国产精品自拍| 337p日本欧洲亚洲大胆精品| 欧美一级一区二区| 日韩一区二区三区在线视频| 欧美性猛片aaaaaaa做受| 在线观看日韩av先锋影音电影院| 成人免费电影视频| av在线不卡观看免费观看| 风间由美一区二区三区在线观看| 日韩1区2区3区| 麻豆精品视频在线观看视频| 日韩精品成人一区二区在线| 天天色图综合网| 丝袜诱惑亚洲看片| 精品一二三四在线| 国产成人亚洲综合a∨婷婷| 国产精品2024| 成人午夜大片免费观看| 99精品久久99久久久久| 91精品福利在线| 7777女厕盗摄久久久| 制服.丝袜.亚洲.另类.中文 | 精品影视av免费| 乱一区二区av| 国产成人精品一区二| a亚洲天堂av| 欧美日韩国产精品成人| 精品国产一区a| 中文字幕制服丝袜成人av| 亚洲免费在线播放| 偷偷要91色婷婷| 国产成人免费视| 欧美性生活大片视频| 欧美一区二区三区爱爱| 日韩一区二区免费视频| 欧美国产乱子伦 | aaa亚洲精品| 欧洲国内综合视频| 久久无码av三级| 亚洲婷婷在线视频| 免费看精品久久片| 成人免费视频一区二区| 欧美精品vⅰdeose4hd| 久久久亚洲欧洲日产国码αv| 国产精品亲子乱子伦xxxx裸| 亚洲电影在线免费观看| 国产成人免费视频| 91精品国产综合久久精品性色| 26uuu欧美| 亚洲成人av免费| 成人污污视频在线观看| 91麻豆精品91久久久久同性| 国产精品黄色在线观看| 日韩av电影免费观看高清完整版 | 欧美自拍偷拍一区| 久久久久久黄色| 亚洲h在线观看| 国产精品系列在线播放| 欧美日韩精品一区二区天天拍小说| 久久精品视频一区二区三区| 一区二区高清免费观看影视大全 | 国产一区在线不卡| 欧美视频完全免费看| 亚洲国产精品成人综合色在线婷婷| 午夜视频在线观看一区| 99精品偷自拍| 国产精品污www在线观看| 九九国产精品视频| 制服丝袜在线91| 亚洲国产精品欧美一二99 | 中文一区二区在线观看 | 成a人片国产精品| 26uuu亚洲综合色欧美| 青青草国产成人99久久| 欧美久久免费观看| 亚洲午夜在线电影| 91九色02白丝porn| 依依成人综合视频| 91麻豆免费看| 欧美韩日一区二区三区| 国产精品一区免费视频| 精品成人一区二区| 激情五月激情综合网| 精品免费日韩av| 精品一区二区三区日韩| 日韩欧美你懂的| 开心九九激情九九欧美日韩精美视频电影 | 欧美色视频在线| 亚洲福利电影网| 91精品国产91热久久久做人人| 亚洲一区二区三区三| 欧美日韩一区二区三区在线看 | 国产精品不卡在线| 福利电影一区二区三区| 亚洲视频免费在线| 欧美日韩一级片在线观看| 亚洲三级电影全部在线观看高清| a美女胸又www黄视频久久| 日韩理论片在线| 99视频一区二区| 一区二区免费在线| 91精品福利在线一区二区三区 | 亚洲一区精品在线| 97久久久精品综合88久久| 亚洲综合一区二区精品导航| 欧美老肥妇做.爰bbww视频| 免费欧美日韩国产三级电影| 久久久久久久久一| 色狠狠桃花综合| 亚洲女女做受ⅹxx高潮| 一本久道中文字幕精品亚洲嫩| 亚洲影院理伦片| 久久综合中文字幕| 91在线视频观看| 奇米影视一区二区三区小说| 久久亚洲欧美国产精品乐播| 色美美综合视频| 天天做天天摸天天爽国产一区 | 黑人巨大精品欧美一区| 1区2区3区欧美| 色中色一区二区| 天堂成人国产精品一区| 国产欧美日韩在线| 欧美精品第1页| 99精品视频在线观看免费| 日本欧美一区二区| 中文字幕在线不卡一区二区三区| 在线观看免费成人| 成人黄色小视频| 久久成人av少妇免费| 夜夜精品浪潮av一区二区三区| 日韩色在线观看| 51久久夜色精品国产麻豆| 欧美三级欧美一级| 欧美在线你懂得| 欧美亚洲高清一区| 欧美专区日韩专区| 欧美日韩国产美| 在线成人高清不卡| 欧美久久一二区| 日韩欧美中文字幕制服| 欧美成人一区二区三区片免费| 日韩视频免费直播| 精品国产凹凸成av人导航| 精品国产污污免费网站入口 | 日本高清不卡在线观看| 94-欧美-setu| 欧美在线看片a免费观看| 91福利国产成人精品照片| 欧美视频精品在线观看| 欧美一二区视频| 国产日韩欧美一区二区三区综合| 亚洲国产精品成人综合 | 6080yy午夜一二三区久久| 欧美一区欧美二区| 久久天天做天天爱综合色| 欧美国产一区二区在线观看 | 亚洲18女电影在线观看| 美腿丝袜亚洲一区| 成人综合在线视频| 欧美在线不卡一区| 欧美成人一级视频| 亚洲欧洲日韩在线| 日韩电影网1区2区| 成人国产精品免费| 欧美日韩国产另类一区| 久久久精品影视| 一区二区不卡在线视频 午夜欧美不卡在| 一区二区三区四区五区视频在线观看 | 韩国毛片一区二区三区| www.亚洲免费av| 777久久久精品| 欧美极品aⅴ影院| 午夜视频在线观看一区二区 | 欧美欧美午夜aⅴ在线观看| 精品久久久久久无| 亚洲另类春色国产| 激情丁香综合五月| 日本精品视频一区二区| 精品入口麻豆88视频| 亚洲综合激情小说| 国产精品1区二区.| 欧美一区二区视频观看视频| 中文字幕精品一区二区精品绿巨人 | 欧美日韩精品福利| 国产精品视频一二| 国产在线日韩欧美| 51精品视频一区二区三区| 中文字幕中文字幕一区|