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

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

?? drawtext.c

?? miniucgui1.30版本的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*** $Id: drawtext.c,v 1.30 2003/09/04 06:02:53 weiym 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 "pixel_ops.h"#include "cursor.h"#include "drawtext.h"static BITMAP char_bmp;static size_t char_bits_size;BOOL InitTextBitmapBuffer (void){    return TRUE;}void TermTextBitmapBuffer (void){    free (char_bmp.bmBits);    char_bmp.bmBits = NULL;    char_bits_size = 0;}static void prepare_bitmap (PDC pdc, int w, int h){    Uint32 size = GAL_GetBoxSize (pdc->surface, w, h, &char_bmp.bmPitch);    char_bmp.bmType = BMP_TYPE_NORMAL;    char_bmp.bmBitsPerPixel = pdc->surface->format->BitsPerPixel;    char_bmp.bmBytesPerPixel = pdc->surface->format->BytesPerPixel;    char_bmp.bmWidth = w;    char_bmp.bmHeight = h;    if (size <= char_bits_size)        return;    char_bits_size = ((size + 31) >> 5) << 5;    char_bmp.bmBits = realloc (char_bmp.bmBits, char_bits_size);}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 void expand_char_pixmap (PDC pdc, int w, int h, const BYTE* bits,             BYTE* expanded, int bold, int italic, int cols){    GAL_Color pal [5];    gal_pixel pixel [5];    int i, x, y;    int b = 0;    BYTE* line;    GAL_GetRGB (pdc->bkcolor, pdc->surface->format, &pal->r, &pal->g, &pal->b);    GAL_GetRGB (pdc->textcolor, pdc->surface->format, &pal[4].r, &pal[4].g, &pal[4].b);    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_MapRGB (pdc->surface->format, pal[i].r, pal[i].g, pal[i].b);    }    line = expanded;    switch (GAL_BytesPerPixel (pdc->surface)) {    case 1:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; 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;                *expanded = pixel [b];                if (bold)                    *(expanded + 1) = pixel [b];                expanded++;            }            bits += cols;            line += char_bmp.bmPitch;        }    break;    case 2:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; x < (w + bold + italic) << 1; x += 2) {                *(ushort *) (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;                *(ushort *) expanded = pixel [b];                if (bold)                    *(ushort *)(expanded + 2) = pixel [b];                expanded += 2;            }            bits += cols;            line += char_bmp.bmPitch;        }    break;    case 3:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; x < (w + bold + italic) * 3; x += 3) {                *(ushort *) (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;                *(ushort *) expanded = pixel[b];                *(expanded + 2) = pixel[b] >> 16;                if (bold) {                    *(ushort *)(expanded + 3) = pixel[b];                    *(expanded + 5) = pixel[b] >> 16;                }                                expanded += 3;            }            bits += cols;            line += char_bmp.bmPitch;        }    break;    case 4:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; x < (w + bold + italic) << 2; x += 4) {                *(uint *) (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;                *(uint *) expanded = pixel[b];                if (bold)                    *(uint *) (expanded + 4) = pixel[b];                expanded += 4;            }            line += char_bmp.bmPitch;        }    }}static void expand_char_bitmap (int w, int h,             const BYTE* bits, int bpp, BYTE* expanded,             int bg, int fg, int bold, int italic){    int x, y;    int b = 0;    BYTE* line;    line = expanded;    switch (bpp) {    case 1:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; 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 += char_bmp.bmPitch;        }    break;    case 2:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; x < (w + bold + italic) << 1; x += 2) {                *(ushort *) (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)))) {                    *(ushort *) expanded = fg;                    if (bold)                        *(ushort *)(expanded + 2) = fg;                }                expanded += 2;            }            line += char_bmp.bmPitch;        }    break;    case 3:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; x < (w + bold + italic) * 3; x += 3) {                *(ushort *) (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)))) {                    *(ushort *) expanded = fg;                    *(expanded + 2) = fg >> 16;                    if (bold) {                        *(ushort *)(expanded + 3) = fg;                        *(expanded + 5) = fg >> 16;                    }                }                                expanded += 3;            }            line += char_bmp.bmPitch;        }    break;    case 4:        for (y = 0; y < h; y++) {            expanded = line;            for (x = 0; x < (w + bold + italic) << 2; x += 4) {                *(uint *) (expanded + x)= bg;            }            if (italic)                expanded += ((h - y) >> 1) << 2;            for (x = 0; x < w; x++) {                if (x % 8 == 0)                    b = *bits++;                if ((b & (128 >> (x % 8)))) {                    *(uint *) expanded = fg;                    if (bold)                        *(uint *) (expanded + 4) = fg;                }                expanded += 4;            }            line += char_bmp.bmPitch;        }    }}/* return width of output */static void put_one_char (PDC pdc, LOGFONT* logfont, DEVFONT* devfont,                int* px, int* py, int h, int ascent, const char* mchar, int len){    const BYTE* bits;    int bbox_x = *px, bbox_y = *py;    int bbox_w, bbox_h, bold = 0, italic = 0;    int bpp, pitch = 0;    int old_x, old_y;    GAL_Rect fg_rect, bg_rect;    RECT rcOutput, rcTemp;        if (devfont->font_ops->get_char_bbox) {        (*devfont->font_ops->get_char_bbox) (logfont, devfont,                            mchar, len, &bbox_x, &bbox_y, &bbox_w, &bbox_h);#if 0        printf ("bbox of %c: %d, %d, %d, %d\n", *mchar, bbox_x, bbox_y, bbox_w, bbox_h);#endif    }    else {        bbox_w = (*devfont->font_ops->get_char_width) (logfont, devfont,                 mchar, len);        bbox_h = h;        bbox_y -= ascent;    }    if (logfont->style & FS_WEIGHT_BOLD         && !(devfont->style & FS_WEIGHT_BOLD)) {        bold = 1;    }    if (logfont->style & FS_SLANT_ITALIC        && !(devfont->style & FS_SLANT_ITALIC)) {        italic = (bbox_h - 1) >> 1;    }    if (logfont->style & FS_WEIGHT_BOOK            && devfont->font_ops->get_char_pixmap) {        bits = (*devfont->font_ops->get_char_pixmap) (logfont, devfont,                 mchar, len, &pitch);    }    else {        bits = (*devfont->font_ops->get_char_bitmap) (logfont, devfont,                 mchar, len);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女一区二区三区| 日韩国产高清影视| 婷婷成人综合网| 一本高清dvd不卡在线观看| 色94色欧美sute亚洲线路一久| 国产传媒一区在线| 国产成人福利片| 成人在线综合网| 99国产精品视频免费观看| www.色综合.com| 色悠悠久久综合| 9191精品国产综合久久久久久| 欧美人体做爰大胆视频| 日韩欧美国产小视频| 99视频国产精品| 69堂亚洲精品首页| 亚洲成人免费av| 欧美色综合影院| 亚洲自拍欧美精品| 色就色 综合激情| 亚洲激情综合网| 91丨porny丨首页| 国产精品国产三级国产有无不卡| 久久国产综合精品| 欧美大胆一级视频| 激情小说欧美图片| 91精品国产色综合久久不卡蜜臀| 婷婷六月综合网| 欧美高清激情brazzers| 亚洲国产精品影院| 精品视频在线免费观看| 亚洲v日本v欧美v久久精品| 欧美综合久久久| 洋洋成人永久网站入口| 91九色最新地址| 亚洲制服丝袜一区| 欧美女孩性生活视频| 日韩精品一级二级| 精品日产卡一卡二卡麻豆| 久久精品国产在热久久| wwww国产精品欧美| 成人综合在线观看| 一区二区在线观看视频在线观看| 色久优优欧美色久优优| 亚洲国产aⅴ天堂久久| 欧美一区二区三区的| 久久精品国产澳门| 久久精品在线免费观看| 97久久精品人人做人人爽50路| 一区二区三区美女| 欧美一区二区性放荡片| 国模一区二区三区白浆| 国产精品麻豆网站| 欧美日韩日本视频| 国模娜娜一区二区三区| 国产精品久久精品日日| 欧美亚洲动漫另类| 久久国产夜色精品鲁鲁99| 国产人伦精品一区二区| 在线看国产一区| 免费在线成人网| 亚洲欧洲色图综合| 欧美精品自拍偷拍动漫精品| 国产一区二区三区日韩| 自拍偷拍亚洲激情| 日韩欧美卡一卡二| 色欧美88888久久久久久影院| 亚洲高清免费一级二级三级| 久久综合丝袜日本网| 日本乱码高清不卡字幕| 黄色日韩三级电影| 亚洲一区视频在线观看视频| 精品国产91乱码一区二区三区| av一区二区不卡| 韩国在线一区二区| 久久99久久99| 亚洲精品一二三四区| www一区二区| 欧美日韩二区三区| 99v久久综合狠狠综合久久| 欧美久久久一区| 国产精品三级av| 一本久道久久综合中文字幕 | 日韩欧美国产一二三区| 久久综合九色综合97_久久久 | 亚洲大尺度视频在线观看| 久久综合狠狠综合久久综合88 | 成人午夜av在线| 日韩高清国产一区在线| 亚洲精品美国一| 久久久国产精华| 日韩欧美国产综合一区| 欧美日韩精品一区二区在线播放| 成人黄色小视频在线观看| 久久精品国产77777蜜臀| 亚洲一区二区三区四区在线 | 2022国产精品视频| 欧美高清一级片在线| 欧洲av一区二区嗯嗯嗯啊| 波多野结衣亚洲| 丁香五精品蜜臀久久久久99网站| 麻豆精品在线观看| 免费看欧美女人艹b| 婷婷久久综合九色国产成人| 一区二区三区四区不卡视频| 中文欧美字幕免费| 国产精品久久久久一区二区三区共 | 成人免费视频播放| 日本成人中文字幕| 日韩福利视频网| 日本中文字幕一区二区视频 | 欧美日韩美女一区二区| 欧美曰成人黄网| 91成人免费在线| a美女胸又www黄视频久久| 成人av网站大全| 色婷婷一区二区三区四区| 日韩欧美在线一区二区三区| 91精品国模一区二区三区| 欧美久久婷婷综合色| 8v天堂国产在线一区二区| 欧美区视频在线观看| 日韩一区二区电影| 久久久久久97三级| 国产精品―色哟哟| 亚洲欧美一区二区久久| 偷拍与自拍一区| 美女被吸乳得到大胸91| 国产精品夜夜嗨| 97久久人人超碰| 午夜欧美大尺度福利影院在线看| 日韩精品一区二区三区四区视频| 日本福利一区二区| 99久久久精品免费观看国产蜜| 久久精品av麻豆的观看方式| 亚洲大尺度视频在线观看| 亚洲色欲色欲www| 国产欧美日韩视频一区二区| 日韩午夜激情免费电影| 欧美日韩在线播放一区| 欧美性受极品xxxx喷水| 91香蕉视频污在线| 色综合久久中文字幕| aaa欧美日韩| 亚洲欧美日韩综合aⅴ视频| 亚洲一区在线视频| 国产精品一区免费视频| 色视频欧美一区二区三区| 91精品国模一区二区三区| 国产精品久久久久久久蜜臀| 亚洲成人中文在线| 高潮精品一区videoshd| 欧美日韩国产精品自在自线| 亚洲精品一二三四区| 美女看a上一区| 一本一道久久a久久精品综合蜜臀| 欧美精品一二三区| 亚洲视频一区在线| 精品一区二区三区久久| 日本道免费精品一区二区三区| 2021国产精品久久精品| 亚洲精品va在线观看| 国产传媒欧美日韩成人| 欧美伊人久久大香线蕉综合69| 久久九九国产精品| 日韩av不卡一区二区| 色哟哟欧美精品| 久久免费电影网| 午夜成人免费视频| 91欧美激情一区二区三区成人| 精品国产精品网麻豆系列| 亚洲最新在线观看| 国产99久久久国产精品潘金| 日韩一区二区三区三四区视频在线观看| 国产精品久久久久精k8| 激情都市一区二区| 91精品国产入口在线| 一区二区三区在线观看欧美| 国产精品18久久久久久久久久久久| 欧美午夜电影网| 伊人婷婷欧美激情| caoporn国产精品| 国产精品色哟哟| 福利视频网站一区二区三区| 精品久久久久久久久久久久久久久 | 欧美国产精品中文字幕| 国产一区在线视频| 日韩视频在线一区二区| 日本在线不卡一区| 欧美高清www午色夜在线视频| 亚洲一区二区三区不卡国产欧美 | 在线免费视频一区二区| |精品福利一区二区三区| 粉嫩在线一区二区三区视频| 久久久久久毛片| 国产精品456露脸| 久久久蜜桃精品| 国产传媒一区在线| 国产精品久久久久精k8| 91香蕉视频mp4|