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

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

?? drawtext.c

?? 這是針對 Linux (i386)平臺的 minigui 3.6.2 開發包(MiniGUI-Processes 運行模式)。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*** $Id: drawtext.c,v 1.36 2004/07/19 07:59:01 snig Exp $** ** drawtext.c: Low level text drawing.** ** Copyright (C) 2003 Feynman Software.** Copyright (C) 1999 ~ 2002 Wei Yongming.**** Current maintainer: Wei Yongming.**** Create date: 2000/06/15*//*** 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 "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 "drawtext.h"static BYTE* buffer;static size_t buf_size;BOOL InitTextBitmapBuffer (void){    return TRUE;}static BYTE* get_buffer (size_t size){    if (size <= buf_size) return buffer;    buf_size = ((size + 31) >> 5) << 5;#if 0    fprintf (stderr, "buf_size: %d.\n", buf_size);#endif    buffer = realloc (buffer, buf_size);    return buffer;}static void free_buffer (void){    free (buffer);    buffer = NULL;    buf_size = 0;}void TermTextBitmapBuffer (void){    free_buffer ();}void gdi_start_new_line (LOGFONT* log_font){    DEVFONT* sbc_devfont = log_font->sbc_devfont;    DEVFONT* mbc_devfont = log_font->mbc_devfont;    if (mbc_devfont) {        if (mbc_devfont->font_ops->start_str_output)            (*mbc_devfont->font_ops->start_str_output) (log_font, mbc_devfont);    }    if (sbc_devfont->font_ops->start_str_output)            (*sbc_devfont->font_ops->start_str_output) (log_font, sbc_devfont);}inline static int get_light (int fg, int bg){    return bg + (fg - bg) / 4;}inline static int get_medium (int fg, int bg){    return bg + (fg - bg) * 2 / 4;}inline static int get_dark (int fg, int bg){    return bg + (fg - bg) * 3 / 4;}static int expand_char_pixmap (PDC pdc, int w, int h, const BYTE* bits,             BYTE* expanded, BOOL erasebg, int bold, int italic, int cols){    GAL_Color pal [5];    gal_pixel pixel [5];    int i, x, y;    int b = 0;    BYTE* line;    int bpp = GAL_BytesPerPixel (pdc->gc);    int line_bytes = bpp * (w + bold + italic);    GAL_UnmapPixel (pdc->gc, pdc->bkcolor, pal);    GAL_UnmapPixel (pdc->gc, pdc->textcolor, pal + 4);    pal [1].r = get_light  (pal [4].r, pal [0].r);    pal [1].g = get_light  (pal [4].g, pal [0].g);    pal [1].b = get_light  (pal [4].b, pal [0].b);    pal [2].r = get_medium (pal [4].r, pal [0].r);    pal [2].g = get_medium (pal [4].g, pal [0].g);    pal [2].b = get_medium (pal [4].b, pal [0].b);    pal [3].r = get_dark  (pal [4].r, pal [0].r);    pal [3].g = get_dark  (pal [4].g, pal [0].g);    pal [3].b = get_dark  (pal [4].b, pal [0].b);    for (i = 0; i < 5; i++) {        pixel [i] = GAL_MapColor (pdc->gc, pal + i);    }    line = expanded;    switch (bpp) {    case 1:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = (h - y) >> 1;                else x = 0;                for (; x < (w + bold + italic); x++) {                    *(expanded + x) = pixel [0];                }            }            if (italic)                expanded += (h - y) >> 1;            for (x = 0; x < w; x++) {                b = *(bits+x);                if (b == 255) b = 4;                else if (b >= 128) b = 3;                else if (b >= 64) b = 2;                else if (b >= 32) b = 1;                else if (b >= 0) b = 0;                if (erasebg || b != 0) {                    *expanded = pixel [b];                    if (bold)                    *(expanded + 1) = pixel [b];                }                expanded++;            }            bits += cols;            line += line_bytes;        }    break;    case 2:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = ((h - y) >> 1) << 1;                else x = 0;                for (; x < (w + bold + italic) << 1; x += 2) {                    *(Uint16 *) (expanded + x) = pixel [0];                }            }            if (italic)                expanded += ((h - y) >> 1) << 1;            for (x = 0; x < w; x++) {                b = *(bits+x);                if (b == 255) b = 4;                else if (b >= 128) b = 3;                else if (b >= 64) b = 2;                else if (b >= 32) b = 1;                else if (b >= 0) b = 0;                if (erasebg || b != 0) {                    *(Uint16 *) expanded = pixel [b];                    if (bold)                        *(Uint16 *)(expanded + 2) = pixel [b];                }                expanded += 2;            }            bits += cols;            line += line_bytes;        }    break;    case 3:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = ((h - y) >> 1 * 3);                else x = 0;                for (; x < (w + bold + italic) * 3; x += 3) {                    *(Uint16 *) (expanded + x) = pixel [0];                    *(expanded + x + 2) = pixel [0] >> 16;                }            }            if (italic)                expanded += 3 * ((h - y) >> 1);            for (x = 0; x < w; x++) {                b = *(bits+x);                if (b == 255) b = 4;                else if (b >= 128) b = 3;                else if (b >= 64) b = 2;                else if (b >= 32) b = 1;                else if (b >= 0) b = 0;                if (erasebg || b != 0) {                    *(Uint16 *) expanded = pixel[b];                    *(expanded + 2) = pixel[b] >> 16;                    if (bold) {                        *(Uint16 *)(expanded + 3) = pixel[b];                        *(expanded + 5) = pixel[b] >> 16;                    }                }                                expanded += 3;            }            bits += cols;            line += line_bytes;        }    break;    case 4:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = ((h - y) >> 1) << 2;                else x = 0;                for (; x < (w + bold + italic) << 2; x += 4) {                    *(Uint32 *) (expanded + x)= pixel [0];                }            }            if (italic)                expanded += ((h - y) >> 1) << 2;            for (x = 0; x < w; x++) {                b = *bits++;                if (b == 255) b = 4;                else if (b >= 128) b = 3;                else if (b >= 64) b = 2;                else if (b >= 32) b = 1;                else if (b >= 0) b = 0;                if (erasebg || b != 0) {                    *(Uint32 *) expanded = pixel[b];                    if (bold)                        *(Uint32 *) (expanded + 4) = pixel[b];                }                expanded += 4;            }            line += line_bytes;        }    }    return line_bytes;}static int expand_char_bitmap (int w, int h,             const BYTE* bits, int bpp, BYTE* expanded,             int bg, int fg, BOOL erasebg, int bold, int italic){    int x, y;    int b = 0;    BYTE* line;    int line_bytes = bpp * (w + bold + italic);    line = expanded;    switch (bpp) {    case 1:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = (h - y) >> 1;                else x = 0;                for (; x < (w + bold + italic); x++) {                    *(expanded + x) = bg;                }            }            if (italic)                expanded += (h - y) >> 1;            for (x = 0; x < w; x++) {                if (x % 8 == 0)                    b = *bits++;                if ((b & (128 >> (x % 8)))) {                    *expanded = fg;                    if (bold)                        *(expanded + 1) = fg;                }                expanded++;            }            line += line_bytes;        }    break;    case 2:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = ((h - y) >> 1) << 1;                else x = 0;                for (; x < (w + bold + italic) << 1; x += 2) {                    *(Uint16 *) (expanded + x) = bg;                }            }            if (italic)                expanded += ((h - y) >> 1) << 1;            for (x = 0; x < w; x++) {                if (x % 8 == 0)                    b = *bits++;                if ((b & (128 >> (x % 8)))) {                    *(Uint16 *) expanded = fg;                    if (bold)                        *(Uint16 *)(expanded + 2) = fg;                }                expanded += 2;            }            line += line_bytes;        }    break;    case 3:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = ((h - y) >> 1 * 3);                else x = 0;                for (; x < (w + bold + italic) * 3; x += 3) {                    *(Uint16 *) (expanded + x) = bg;                    *(expanded + x + 2) = bg >> 16;                }            }            if (italic)                expanded += 3 * ((h - y) >> 1);            for (x = 0; x < w; x++) {                if (x % 8 == 0)                    b = *bits++;                if ((b & (128 >> (x % 8)))) {                    *(Uint16 *) expanded = fg;                    *(expanded + 2) = fg >> 16;                    if (bold) {                        *(Uint16 *)(expanded + 3) = fg;                        *(expanded + 5) = fg >> 16;                    }                }                                expanded += 3;            }            line += line_bytes;        }    break;    case 4:        for (y = 0; y < h; y++) {            expanded = line;            if (erasebg) {                if (italic) x = ((h - y) >> 1) << 2;                else x = 0;                for (; x < (w + bold + italic) << 2; x += 4) {                    *(Uint32 *) (expanded + x)= bg;                }            }            if (italic)                expanded += ((h - y) >> 1) << 2;            for (x = 0; x < w; x++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区婷婷月色| 亚洲影院免费观看| 亚洲精品欧美二区三区中文字幕| 天天做天天摸天天爽国产一区| 激情综合网天天干| 色爱区综合激月婷婷| 国产日产欧美精品一区二区三区| 日韩高清在线电影| 91官网在线观看| 国产午夜精品理论片a级大结局 | 欧美日韩你懂得| 欧美激情综合在线| 九一久久久久久| 欧美日韩国产免费| 亚洲激情成人在线| 91视频91自| 亚洲人成精品久久久久久| 高清成人免费视频| 久久久久久99久久久精品网站| 亚洲第四色夜色| 欧美性高清videossexo| 亚洲天堂a在线| 成人动漫精品一区二区| 久久亚洲精品小早川怜子| 蜜乳av一区二区三区| 欧美三级在线视频| 亚洲韩国一区二区三区| 日本精品一区二区三区高清| 中文字幕亚洲视频| 不卡一区二区三区四区| 国产精品天天摸av网| 成人精品一区二区三区四区| 国产欧美一区二区精品性色超碰 | 精品av综合导航| 久久国产精品免费| 欧美变态tickling挠脚心| 日韩成人精品在线观看| 欧美一区二区在线播放| 精品一区二区在线视频| 国产午夜精品久久久久久免费视| 国产一区二区三区精品视频| 国产亚洲一区二区在线观看| 国产成人av电影在线观看| 欧美韩国日本综合| 91无套直看片红桃| 亚洲成人av在线电影| 欧美美女视频在线观看| 蜜臀精品久久久久久蜜臀| 久久久久久久性| 成人av电影免费观看| 亚洲影院理伦片| 欧美一级艳片视频免费观看| 国产乱子伦视频一区二区三区| 国产女主播视频一区二区| 99精品桃花视频在线观看| 亚洲美女视频在线| 欧美一区二区黄色| 国产99久久久国产精品潘金 | 国产亚洲短视频| 一本大道久久精品懂色aⅴ| 亚洲午夜一二三区视频| 日韩欧美的一区二区| 成人激情图片网| 亚洲成人免费在线观看| 久久精品视频一区二区三区| 色域天天综合网| 韩国欧美国产1区| 亚洲美女区一区| 2020国产精品自拍| 欧美日韩一级片在线观看| 久久99国产精品久久| 亚洲夂夂婷婷色拍ww47| 久久噜噜亚洲综合| 欧美日高清视频| 成人白浆超碰人人人人| 蜜臀av一级做a爰片久久| 国产精品福利一区| 欧美刺激午夜性久久久久久久| 97久久人人超碰| 精品一二线国产| 亚洲电影视频在线| 国产精品美女久久久久av爽李琼| 在线不卡一区二区| 97se亚洲国产综合自在线不卡 | 日本色综合中文字幕| 中文字幕一区二区三区精华液| 日韩三级免费观看| 91福利资源站| av电影在线观看完整版一区二区| 奇米影视在线99精品| 亚洲一区二区三区四区的| 国产亚洲欧美一区在线观看| 7777精品伊人久久久大香线蕉的| 色综合久久88色综合天天 | 91亚洲精品久久久蜜桃网站| 日韩av在线发布| 亚洲18女电影在线观看| 亚洲欧美一区二区三区国产精品| 久久九九全国免费| 精品国产不卡一区二区三区| 欧美日韩1234| 欧美精品久久99久久在免费线 | 成人h精品动漫一区二区三区| 麻豆国产精品一区二区三区| 天天色图综合网| 一区二区三区免费网站| 国产精品乱码人人做人人爱| 国产精品视频一二三区| 国产精品久久久久久久久久久免费看| 欧美tk—视频vk| 欧美一卡在线观看| 91精品国产综合久久久久久| 欧美日韩大陆在线| 欧美军同video69gay| 欧美色图在线观看| 51精品国自产在线| 欧美一区二区久久久| 91精品国产综合久久久久久| 日韩欧美国产高清| www激情久久| 国产亚洲综合在线| 亚洲欧美怡红院| 亚洲日本护士毛茸茸| 亚洲一区二区欧美日韩| 石原莉奈在线亚洲三区| 久久国产精品一区二区| 激情五月婷婷综合| 成人精品小蝌蚪| 色噜噜狠狠一区二区三区果冻| 日本精品视频一区二区| 欧美色男人天堂| 日韩免费一区二区| 久久久久99精品一区| 亚洲欧洲制服丝袜| 五月激情综合色| 九色综合狠狠综合久久| 成人国产精品免费观看视频| 91偷拍与自偷拍精品| 欧美日韩亚洲另类| 久久久久久久久久久久电影| 中文字幕一区在线观看视频| 亚洲激情自拍偷拍| 久久精品二区亚洲w码| 国产不卡免费视频| 欧美综合天天夜夜久久| 精品毛片乱码1区2区3区| 中文字幕亚洲在| 日本欧美肥老太交大片| www.久久精品| 日韩亚洲欧美一区| 国产精品人成在线观看免费| 午夜私人影院久久久久| 粉嫩蜜臀av国产精品网站| 欧美色国产精品| 欧美极品xxx| 奇米一区二区三区| 91视频精品在这里| 精品久久久久久久久久久久包黑料| 亚洲国产精品v| 蜜桃av一区二区三区| 91色porny| 国产欧美一区二区三区沐欲| 日韩精品国产欧美| 91免费观看视频| 久久精品亚洲精品国产欧美kt∨| 亚洲午夜精品久久久久久久久| 国内精品免费在线观看| 欧美亚洲一区二区在线| 国产精品视频看| 国产一区二区女| 欧美日韩成人综合天天影院| 中文字幕在线观看不卡视频| 激情av综合网| 欧美一级久久久| 五月综合激情婷婷六月色窝| 99在线热播精品免费| 精品99一区二区三区| 秋霞av亚洲一区二区三| 欧美色爱综合网| 亚洲永久免费视频| 91丨九色porny丨蝌蚪| 久久久三级国产网站| 久久不见久久见免费视频7 | 欧美亚洲禁片免费| 国产精品不卡一区二区三区| 国产一区欧美二区| 欧美v日韩v国产v| 日本 国产 欧美色综合| 欧美日本一区二区在线观看| 亚洲精品欧美在线| 一本到不卡免费一区二区| 亚洲欧洲日韩女同| 成人国产精品视频| 国产精品免费视频观看| 国产成人午夜精品影院观看视频 | 亚洲男帅同性gay1069| eeuss鲁一区二区三区| 日本一区二区视频在线| 岛国精品在线播放| 亚洲欧美在线视频观看|