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

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

?? rawbitmap.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發包(MiniGUI-Processes 運行模式)。
?? C
字號:
/*** $Id: rawbitmap.c,v 1.38 2004/09/21 01:44:34 snig Exp $** ** rawbitmap.c: The Raw Bitmap Font operation set.**** Copyright (C) 2003 Feynman Software.** Copyright (C) 2000 ~ 2002 Wei Yongming.**** Current maintainer: Wei Yongming.**** Create date: 2000/06/13*//*** 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 "misc.h"#ifndef _INCORE_RES#    include <sys/stat.h>#    include <sys/types.h>#    include <fcntl.h>#    include <unistd.h>#endif#ifdef HAVE_MMAP    #include <sys/mman.h>#endif#include "charset.h"#include "devfont.h"#include "rawbitmap.h"#include "fontname.h"#ifdef _RBF_SUPPORT#ifdef _INCORE_RESstatic INCORE_RBFINFO* incore_rbfonts [] = {    &fixed6x12_iso8859_1,#ifdef _INCORERBF_GB12    &song12_gb2312,#endif#ifdef _INCORERBF_GB16    &song16_gb2312,#endif#ifdef _INCORERBF_GB24    &song24_gb2312,#endif#ifdef _INCORERBF_LATIN1_16    &fixed8x16_iso8859_1,#endif#ifdef _INCORERBF_LATIN1_24    &fixed12x24_iso8859_1,#endif#ifdef _INCORERBF_KJ12    &gothic6x12_jis,#endif#ifdef _INCORERBF_KJ14    &gothic7x14_jis,#endif#ifdef _INCORERBF_KJ16    &gothic8x16_jis,#endif#ifdef _INCORERBF_KJ12    &gothic_jiskan_12, #endif#ifdef _INCORERBF_KJ14    &kan14_jis,#endif#ifdef _INCORERBF_KJ16    &kan16_jis,#endif};#define NR_RBFONTS  (sizeof (incore_rbfonts) /sizeof (INCORE_RBFINFO*))static DEVFONT* incore_rbf_dev_fonts;static RBFINFO* incore_rbf_infos;BOOL InitIncoreRBFonts (void){    int i;    incore_rbf_dev_fonts = calloc (NR_RBFONTS, sizeof (DEVFONT));    incore_rbf_infos = calloc (NR_RBFONTS, sizeof (RBFINFO));    if (!incore_rbf_dev_fonts || !incore_rbf_infos)        return TRUE;    for (i = 0; i < NR_RBFONTS; i++) {        char charset [LEN_FONT_NAME + 1];        if (!fontGetCharsetFromName (incore_rbfonts [i]->name, charset)) {            fprintf (stderr, "GDI: Invalid font name (charset): %s.\n",                     incore_rbfonts [i]->name);            goto error_load;        }        if ((incore_rbf_infos [i].charset_ops                = GetCharsetOps (charset)) == NULL) {            fprintf (stderr, "GDI: Not supported charset: %s.\n", charset);            goto error_load;        }        if ((incore_rbf_infos [i].width = fontGetWidthFromName (incore_rbfonts [i]->name)) == -1) {            fprintf (stderr, "GDI: Invalid font name (width): %s.\n",                     incore_rbfonts [i]->name);            goto error_load;        }                if ((incore_rbf_infos [i].height = fontGetHeightFromName (incore_rbfonts [i]->name)) == -1) {            fprintf (stderr, "GDI: Invalid font name (height): %s.\n",                    incore_rbfonts [i]->name);            goto error_load;        }                incore_rbf_infos [i].nr_chars = incore_rbf_infos [i].charset_ops->nr_chars;        incore_rbf_infos [i].font_size = ((incore_rbf_infos [i].width + 7) >> 3) *                 incore_rbf_infos [i].height * incore_rbf_infos [i].nr_chars;        incore_rbf_infos [i].font = (unsigned char*) incore_rbfonts [i]->data;        strncpy (incore_rbf_dev_fonts[i].name, incore_rbfonts [i]->name, LEN_DEVFONT_NAME);        incore_rbf_dev_fonts[i].name [LEN_DEVFONT_NAME] = '\0';        incore_rbf_dev_fonts[i].font_ops = &raw_bitmap_font_ops;        incore_rbf_dev_fonts[i].charset_ops = incore_rbf_infos [i].charset_ops;        incore_rbf_dev_fonts[i].data = incore_rbf_infos + i;#if 0        fprintf (stderr, "GDI: RBFDevFont %i: %s.\n", i, incore_rbf_dev_fonts[i].name);#endif    }    for (i = 0; i < NR_RBFONTS; i++) {        if (incore_rbf_infos [i].charset_ops->bytes_maxlen_char > 1)            AddMBDevFont (incore_rbf_dev_fonts + i);        else            AddSBDevFont (incore_rbf_dev_fonts + i);    }    return TRUE;error_load:    fprintf (stderr, "GDI: Error in initializing incore raw bitmap fonts!\n");    TermIncoreRBFonts ();    return FALSE;}void TermIncoreRBFonts (void){    free (incore_rbf_dev_fonts);    incore_rbf_dev_fonts = NULL;    free (incore_rbf_infos);    incore_rbf_infos = NULL;}#else/********************** Load/Unload of raw bitmap font ***********************/BOOL LoadRawBitmapFont (const char* file, RBFINFO* RBFInfo){#ifdef HAVE_MMAP    int fd;#else    FILE* fp;#endif    size_t size;    size = ((RBFInfo->width + 7) >> 3) * RBFInfo->height * RBFInfo->nr_chars;    RBFInfo->font_size = size;#ifdef HAVE_MMAP    if ((fd = open (file, O_RDONLY)) < 0)        return FALSE;    if ((RBFInfo->font = mmap (NULL, size, PROT_READ, MAP_SHARED,             fd, 0)) == MAP_FAILED) {        close (fd);        return FALSE;    }    close (fd);#else    // Allocate memory for font data.    if (!(RBFInfo->font = (char *)malloc (size)) )        return FALSE;    // Open font file and read information to the system memory.    if (!(fp = fopen (file, "rb"))) {        return FALSE;    }    if (fread (RBFInfo->font, sizeof(char), size, fp) < size) {        fclose(fp);        return FALSE;    }    fclose(fp);#endif  /* HAVE_MMAP */    return TRUE;}void UnloadRawBitmapFont (RBFINFO* RBFInfo){#ifdef HAVE_MMAP    if (RBFInfo->font)        munmap (RBFInfo->font, RBFInfo->font_size);#else    free (RBFInfo->font);#endif}/********************** Init/Term of raw bitmap font ***********************/static int nr_fonts;static RBFINFO* rbf_infos;static DEVFONT* rbf_dev_fonts;#define SECTION_NAME "rawbitmapfonts"BOOL InitRawBitmapFonts (void){    int i;    char font_name [LEN_DEVFONT_NAME + 1];    if (GetMgEtcIntValue (SECTION_NAME, "font_number",                            &nr_fonts) < 0 )        return FALSE;    if ( nr_fonts < 1) return TRUE;    rbf_infos = calloc (nr_fonts, sizeof (RBFINFO));    rbf_dev_fonts = calloc (nr_fonts, sizeof (DEVFONT));    if (rbf_infos == NULL || rbf_dev_fonts == NULL) {        free (rbf_infos);        free (rbf_dev_fonts);        return FALSE;    }    for (i = 0; i < nr_fonts; i++)        rbf_infos [i].font = NULL;    for (i = 0; i < nr_fonts; i++) {        char key [11];        char charset [LEN_FONT_NAME + 1];        char file [MAX_PATH + 1];        sprintf (key, "name%d", i);        if (GetMgEtcValue (SECTION_NAME, key,                            font_name, LEN_DEVFONT_NAME) < 0 )            goto error_load;        if (!fontGetCharsetFromName (font_name, charset)) {            fprintf (stderr, "GDI: Invalid font name (charset): %s.\n",                     font_name);            goto error_load;        }        if ((rbf_infos [i].charset_ops                = GetCharsetOps (charset)) == NULL) {            fprintf (stderr, "GDI: Not supported charset: %s.\n", charset);            goto error_load;        }        if ((rbf_infos [i].width = fontGetWidthFromName (font_name)) == -1) {            fprintf (stderr, "GDI: Invalid font name (width): %s.\n",                     font_name);            goto error_load;        }                if ((rbf_infos [i].height = fontGetHeightFromName (font_name)) == -1) {            fprintf (stderr, "GDI: Invalid font name (height): %s.\n",                    font_name);            goto error_load;        }                rbf_infos [i].nr_chars = rbf_infos [i].charset_ops->nr_chars;        sprintf (key, "fontfile%d", i);        if (GetMgEtcValue (SECTION_NAME, key,                            file, MAX_PATH) < 0)            goto error_load;        if (!LoadRawBitmapFont (file, rbf_infos + i))            goto error_load;        strncpy (rbf_dev_fonts[i].name, font_name, LEN_DEVFONT_NAME);        rbf_dev_fonts[i].name [LEN_DEVFONT_NAME] = '\0';        rbf_dev_fonts[i].font_ops = &raw_bitmap_font_ops;        rbf_dev_fonts[i].charset_ops = rbf_infos [i].charset_ops;        rbf_dev_fonts[i].data = rbf_infos + i;#if 0        fprintf (stderr, "GDI: RBFDevFont %i: %s.\n", i, rbf_dev_fonts[i].name);#endif    }    for (i = 0; i < nr_fonts; i++) {        if (rbf_infos [i].charset_ops->bytes_maxlen_char > 1)            AddMBDevFont (rbf_dev_fonts + i);        else            AddSBDevFont (rbf_dev_fonts + i);    }    return TRUE;error_load:    fprintf (stderr, "GDI: Error in loading raw bitmap fonts!\n");    for (i = 0; i < nr_fonts; i++)        UnloadRawBitmapFont (rbf_infos + i);        free (rbf_infos);    free (rbf_dev_fonts);    rbf_infos = NULL;    rbf_dev_fonts = NULL;    return FALSE;}void TermRawBitmapFonts (void){    int i;    for (i = 0; i < nr_fonts; i++)        UnloadRawBitmapFont (rbf_infos + i);        free (rbf_infos);    free (rbf_dev_fonts);    rbf_infos = NULL;    rbf_dev_fonts = NULL;}#endif /* _INCORE_RES *//*************** Raw bitmap font operations *********************************/static int get_char_width (LOGFONT* logfont, DEVFONT* devfont,                 const unsigned char* mchar, int len){    return RBFONT_INFO_P (devfont)->width;}static int get_str_width (LOGFONT* logfont, DEVFONT* devfont,                 const unsigned char* mstr, int len, int cExtra){    int number;        number = (*devfont->charset_ops->nr_chars_in_str) (mstr, len);    return (RBFONT_INFO_P (devfont)->width + cExtra )* number;}static int get_ave_width (LOGFONT* logfont, DEVFONT* devfont){    return RBFONT_INFO_P (devfont)->width;}static int get_font_height (LOGFONT* logfont, DEVFONT* devfont){    return RBFONT_INFO_P (devfont)->height;}static int get_font_size (LOGFONT* logfont, DEVFONT* devfont, int expect){    return RBFONT_INFO_P (devfont)->height;}static int get_font_ascent (LOGFONT* logfont, DEVFONT* devfont){    int height = RBFONT_INFO_P (devfont)->height;        if (height >= 20)        return height - 3;    else if (height >= 15)        return height - 2;    else if (height >= 10)        return height - 1;    return height;}static int get_font_descent (LOGFONT* logfont, DEVFONT* devfont){    int height = RBFONT_INFO_P (devfont)->height;        if (height >= 20)        return 3;    else if (height >= 15)        return 2;    else if (height >= 10)        return 1;    return 0;}static size_t char_bitmap_size (LOGFONT* logfont, DEVFONT* devfont,                 const unsigned char* mchar, int len){    return ((RBFONT_INFO_P (devfont)->width + 7) >> 3)                 * RBFONT_INFO_P (devfont)->height;}static size_t max_bitmap_size (LOGFONT* logfont, DEVFONT* devfont){    return ((RBFONT_INFO_P (devfont)->width + 7) >> 3)                 * RBFONT_INFO_P (devfont)->height;}static const void* get_char_bitmap (LOGFONT* logfont, DEVFONT* devfont,            const unsigned char* mchar, int len){    int bitmap_size;    int offset;    offset = (*devfont->charset_ops->char_offset) (mchar);    if (offset >= RBFONT_INFO_P (devfont)->font_size)        offset = (*devfont->charset_ops->char_offset)                     (devfont->charset_ops->def_char);    bitmap_size = ((RBFONT_INFO_P (devfont)->width + 7) >> 3)                 * RBFONT_INFO_P (devfont)->height;     return RBFONT_INFO_P (devfont)->font + bitmap_size * offset;}/**************************** Global data ************************************/FONTOPS raw_bitmap_font_ops = {    get_char_width,    get_str_width,    get_ave_width,    get_ave_width,  // max_width same as ave_width    get_font_height,    get_font_size,    get_font_ascent,    get_font_descent,    char_bitmap_size,    max_bitmap_size,    get_char_bitmap,    NULL,    NULL,    NULL,    NULL,    NULL};#endif  /* _RBF_SUPPORT */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区三区成为亚洲经典| 欧美大片日本大片免费观看| 日韩一区和二区| 久久久久久综合| 亚洲国产精品久久不卡毛片| 激情偷乱视频一区二区三区| 日本道色综合久久| 久久久久久久久久久电影| 午夜电影久久久| 91麻豆国产精品久久| 久久久蜜臀国产一区二区| 天天影视色香欲综合网老头| 成人av资源网站| 精品国产伦一区二区三区免费| 亚洲卡通动漫在线| 成人爽a毛片一区二区免费| 5858s免费视频成人| 亚洲精品久久久久久国产精华液| 国产资源在线一区| 欧美成人精品二区三区99精品| 亚洲一区二区三区美女| 在线观看视频一区二区| 亚洲图片激情小说| caoporn国产精品| 欧美激情一区二区三区全黄| 精品在线播放免费| 欧美videossexotv100| 青青青伊人色综合久久| 欧美日本在线观看| 天堂va蜜桃一区二区三区漫画版| 精品视频在线视频| 五月激情丁香一区二区三区| 在线亚洲人成电影网站色www| 亚洲视频一区二区在线| 91色在线porny| 亚洲精品免费播放| 欧美日韩在线免费视频| 天天做天天摸天天爽国产一区| 精品视频一区三区九区| 午夜精品一区二区三区免费视频| 欧美探花视频资源| 日本欧美一区二区三区| 精品第一国产综合精品aⅴ| 国产美女精品人人做人人爽| 久久婷婷久久一区二区三区| 国产夫妻精品视频| 亚洲国产精品成人综合色在线婷婷| 成人毛片在线观看| 亚洲一区二区偷拍精品| 欧美日韩国产小视频| 麻豆91精品91久久久的内涵| 2023国产精品| eeuss鲁一区二区三区| 亚洲国产乱码最新视频| 欧美xxxx在线观看| 粉嫩aⅴ一区二区三区四区| 亚洲免费在线视频一区 二区| 欧美优质美女网站| 国产尤物一区二区| 亚洲天堂福利av| 欧美一区二区三区爱爱| 丰满少妇久久久久久久| 亚洲一二三区不卡| 久久蜜桃一区二区| 在线欧美日韩精品| 久久99热国产| 亚洲一区日韩精品中文字幕| 欧美一区二区在线观看| 成人黄色国产精品网站大全在线免费观看| 亚洲欧美日韩电影| 日韩欧美第一区| 色哟哟日韩精品| 国产一区二区调教| 亚洲国产wwwccc36天堂| 国产三级一区二区三区| 欧美性大战久久| 成人性生交大片免费看视频在线| 亚洲国产欧美另类丝袜| 国产欧美日韩卡一| 91麻豆精品国产91| 91美女蜜桃在线| 国产精品自拍三区| 免费成人在线网站| 一区二区三区免费看视频| 26uuu久久天堂性欧美| 欧美日韩视频在线观看一区二区三区| 国产精品影视天天线| 日韩vs国产vs欧美| 一区二区日韩av| 国产精品国产三级国产aⅴ入口| 欧美一区三区四区| 91国产精品成人| 成人免费高清在线| 国产一区二区日韩精品| 日本欧美一区二区三区| 亚洲国产精品久久一线不卡| 日韩一区中文字幕| 亚洲国产成人自拍| 久久久久久亚洲综合| 欧美一激情一区二区三区| 在线播放中文一区| 在线视频你懂得一区二区三区| 成人黄色小视频| 成人激情小说乱人伦| 国产精品自在欧美一区| 国产伦精品一区二区三区在线观看| 日韩精品亚洲专区| 天堂va蜜桃一区二区三区 | 色国产精品一区在线观看| 国产一区二区不卡| 狠狠色狠狠色综合日日91app| 偷拍日韩校园综合在线| 亚洲成人免费在线| 亚洲电影一级片| 五月婷婷激情综合| 美女任你摸久久| 激情国产一区二区| 高清不卡一二三区| 成人精品免费看| 99久久99久久精品国产片果冻| 成人激情免费网站| 色综合久久66| 欧美日韩一区二区三区四区五区| 91国模大尺度私拍在线视频| 欧美日韩日日摸| 日韩一区二区三区视频在线| 日韩一区二区中文字幕| 久久久久久影视| 亚洲欧洲国产日韩| 三级成人在线视频| 九九国产精品视频| 国产91精品在线观看| 91亚洲国产成人精品一区二区三| 色婷婷亚洲精品| 欧美乱妇15p| 久久亚洲捆绑美女| 亚洲欧美日韩中文播放| 偷拍一区二区三区四区| 国产一区在线视频| 91麻豆免费观看| 欧美一区在线视频| 国产精品麻豆久久久| 亚洲v中文字幕| 国产成人午夜精品影院观看视频| www.66久久| 日韩美女视频在线| 亚洲视频图片小说| 国产91精品在线观看| 日本精品一级二级| 精品电影一区二区| 亚洲精品日日夜夜| 精品无人区卡一卡二卡三乱码免费卡| 丰满亚洲少妇av| 69久久夜色精品国产69蝌蚪网| 久久日一线二线三线suv| 亚洲裸体在线观看| 美女www一区二区| 91香蕉视频在线| 亚洲综合久久av| 狠狠色狠狠色合久久伊人| 色av一区二区| 久久久久久久综合日本| 一区二区三区成人在线视频| 韩国女主播一区| 欧日韩精品视频| 中文字幕av一区二区三区高| 日本视频一区二区三区| 99久久精品国产观看| 精品久久国产97色综合| 五月天一区二区| 日本韩国欧美一区| 亚洲国产精品v| 国产在线不卡一卡二卡三卡四卡| 欧美狂野另类xxxxoooo| 亚洲人成伊人成综合网小说| 国产乱码精品一品二品| 欧美电影免费观看高清完整版在线| 亚洲综合免费观看高清完整版在线| 国产成人亚洲综合a∨猫咪| 精品乱人伦小说| 天堂在线一区二区| 日本韩国欧美三级| 一区在线观看视频| 高清国产午夜精品久久久久久| 日韩精品一区二区三区三区免费| 亚洲国产欧美在线人成| 在线观看国产精品网站| 中文字幕一区二区三区四区| 国产成人一区在线| 久久嫩草精品久久久久| 精品一区二区三区在线播放 | 日韩欧美专区在线| 爽爽淫人综合网网站| 欧美人与性动xxxx| 亚洲无人区一区| 欧美日韩一区二区在线视频| 一区二区国产视频| 精品国产精品网麻豆系列| 免费不卡在线观看| 日韩女优毛片在线|