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

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

?? textfield.c

?? Ming is a library for generating Macromedia Flash files (.swf), written in C, and includes useful ut
?? C
字號:
/*    Ming, an SWF output library    Copyright (C) 2002  Opaque Industries - http://www.opaque.net/    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Lesser General Public    License as published by the Free Software Foundation; either    version 2.1 of the License, or (at your option) any later version.    This library 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    Lesser General Public License for more details.    You should have received a copy of the GNU Lesser General Public    License along with this library; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//* $Id: textfield.c,v 1.21 2008/06/25 12:36:39 krechert Exp $ */#include <stdlib.h>#include <string.h>#include "libming.h"#include "textfield.h"#include "utf8.h"#include "character.h"#include "browserfont.h"#include "font.h"typedef enum {Unresolved, BrowserFont, Font, FontChar, Imported} FontType;struct SWFTextField_s{	struct SWFCharacter_s character;	SWFOutput out; /* cheap way out */	int flags;	FontType fonttype;	union	{		SWFFont font;		SWFFontCharacter fontchar;		SWFBrowserFont browserFont;	} font;	int nLines;	int fontHeight;	int fieldHeight;	int width;	int padding;	byte r;	byte g;	byte b;	byte a;	short length;	byte alignment;	short leftMargin;	short rightMargin;	short indentation;	short lineSpacing;	char *varName;	char *string;	unsigned short *embeds;	int embedlen;};/* after every metric change, we update the bounds for the	 SWFCharacter_getBounds function */static voidresetBounds(SWFTextField field){	int minX, maxX, minY, maxY;	SWFRect_getBounds(CHARACTER(field)->bounds, &minX, &maxX, &minY, &maxY);	minX = -field->padding;	minY = -field->padding;	if ( field->width == 0 )	{		int width = field->fontHeight*(field->string ? strlen(field->string) : 0);		maxX = field->padding + width;	}	else		maxX = field->padding + field->width;	if ( field->fieldHeight == 0 )	{		maxY = field->padding + field->fontHeight*field->nLines +			(field->nLines-1)*field->lineSpacing;	}	else		maxY = field->padding + field->fieldHeight;	SWFRect_setBounds(CHARACTER(field)->bounds, minX, maxX, minY, maxY);}voidwriteSWFTextFieldToMethod(SWFBlock block,													SWFByteOutputMethod method, void *data){	SWFOutput out = SWFBrowserFont_getOutput((SWFBrowserFont)block);	SWFOutput_writeToMethod(out, method, data);}intcompleteSWFTextField(SWFBlock block){	SWFTextField field = (SWFTextField)block;	/* we're guessing how big the block's going to be.. */	SWFOutput out =		newSizedSWFOutput(42 			+ ((field->varName)?strlen(field->varName):0) 			+ ((field->string)?strlen(field->string):0));	field->out = out;	resetBounds(field);	SWFOutput_writeUInt16(out, CHARACTERID(field));	SWFOutput_writeRect(out, CHARACTER(field)->bounds);	SWFOutput_writeUInt16(out, field->flags);	if(field->flags & SWFTEXTFIELD_HASFONT)	{		SWFOutput_writeUInt16(out, CHARACTERID(field->font.fontchar));		SWFOutput_writeUInt16(out, field->fontHeight);	}	if(field->flags & SWFTEXTFIELD_HASCOLOR)	{		SWFOutput_writeUInt8(out, field->r);		SWFOutput_writeUInt8(out, field->g);		SWFOutput_writeUInt8(out, field->b);		SWFOutput_writeUInt8(out, field->a);	}	if ( field->flags & SWFTEXTFIELD_HASLENGTH )		SWFOutput_writeUInt16(out, field->length);	if(field->flags & SWFTEXTFIELD_HASLAYOUT)	{		SWFOutput_writeUInt8(out, field->alignment);		SWFOutput_writeUInt16(out, field->leftMargin);		SWFOutput_writeUInt16(out, field->rightMargin);		SWFOutput_writeUInt16(out, field->indentation);		SWFOutput_writeUInt16(out, field->lineSpacing);	}	SWFOutput_writeString(out, (byte*) field->varName);	if ( field->flags & SWFTEXTFIELD_HASTEXT )		SWFOutput_writeString(out, (byte*)field->string);	/*		XXX - if font is a real font, do we need to talk to it?		flash 4 just makes a browser font for (editable) textfields for all fonts	*/	SWFOutput_byteAlign(out);	return SWFOutput_getLength(out);}voiddestroySWFTextField(SWFTextField field){	destroySWFOutput(field->out);	if ( field->varName != NULL )		free(field->varName);	if ( field->string != NULL )		free(field->string);	if ( field->embeds != NULL )		free(field->embeds);	destroySWFCharacter((SWFCharacter) field);}SWFTextFieldnewSWFTextField(){	SWFRect temp_rect;	SWFTextField field = (SWFTextField)malloc(sizeof(struct SWFTextField_s));	/* If malloc failed, return NULL to signify this */	if (NULL == field)		return NULL;	SWFCharacterInit((SWFCharacter)field);	BLOCK(field)->writeBlock = writeSWFTextFieldToMethod;	BLOCK(field)->complete = completeSWFTextField;	BLOCK(field)->dtor = (destroySWFBlockMethod) destroySWFTextField;	BLOCK(field)->type = SWF_DEFINEEDITTEXT;	CHARACTERID(field) = ++SWF_gNumCharacters;	temp_rect = newSWFRect(-40, 280, -40, 280);	/* If newSWFRect() failed, return NULL to signify this */	if (NULL == temp_rect)	{		free(field);		return NULL;	}	CHARACTER(field)->bounds = temp_rect;	field->out = NULL;	field->lineSpacing = 40;	field->padding = 40;	field->fontHeight = 240;	field->fieldHeight = 0;	field->width = 0;	field->a = 0xff;	field->nLines = 1;	field->flags = 0;	field->font.font = NULL;	field->fonttype = Unresolved;	field->varName = NULL;	field->string = NULL;	field->r = 0;	field->g = 0;	field->b = 0;	field->a = 0xff;	field->length = 0;	field->alignment = SWFTEXTFIELD_ALIGN_LEFT;	field->leftMargin = 0;	field->rightMargin = 0;	field->indentation = 0;	field->embeds = NULL;	field->embedlen = 0;	return field;}static inline int checkSWFFontCharacter(SWFFontCharacter fc){	int font_flags;	int nGlyphs;	SWFFont font = SWFFontCharacter_getFont(fc);	font_flags = SWFFont_getFlags(font);	nGlyphs = SWFFontCharacter_getNGlyphs(fc);		if((font_flags & SWF_FONT_HASLAYOUT) == 0 && nGlyphs == 0)		return -1;	return 0;}/* font machinery:	if a regular font (outlines in fdb) is used, it is added to the textfield	as type Font and later converted to a FontChar	while a Font, characters can be added (embedded)	an Imported font stays as is, so does a BrowserFont */voidSWFTextField_setFont(SWFTextField field, SWFBlock font){	if(font == NULL)		return;	if ( BLOCK(font)->type == SWF_BROWSERFONT )	{		field->fonttype = BrowserFont;		field->font.browserFont = (SWFBrowserFont)font;		SWFCharacter_addDependency((SWFCharacter)field, (SWFCharacter)font);		field->flags |= SWFTEXTFIELD_HASFONT;	}	else if ( BLOCK(font)->type == SWF_DEFINEFONT 		|| BLOCK(font)->type == SWF_DEFINEFONT2)	{		SWFFontCharacter fc = (SWFFontCharacter)font;		if(checkSWFFontCharacter(fc))			{			SWF_warn("font is empty or has no layout information\n");			return;		}		field->fonttype = Imported;		field->font.fontchar = fc;		SWFCharacter_addDependency(			(SWFCharacter)field, (SWFCharacter)font);		field->flags |= SWFTEXTFIELD_HASFONT | SWFTEXTFIELD_USEFONT;	}	else if (BLOCK(font)->type == SWF_MINGFONT)	{		if(!(SWFFont_getFlags((SWFFont)font) & SWF_FONT_HASLAYOUT))		{			SWF_warn("font is empty or has no layout information\n");			return;		}		field->fonttype = Font;		field->font.font = (SWFFont)font;		field->flags |= SWFTEXTFIELD_HASFONT | SWFTEXTFIELD_USEFONT;	}	else		SWF_warn("SWFTextField_setFont: not a valid font object\n");}SWFFontSWFTextField_getUnresolvedFont(SWFTextField field){		switch(field->fonttype)	{	case Font:			return field->font.font;		default:			return NULL;	}}voidSWFTextField_addChars(SWFTextField field, const char *string){	int n, len = strlen(string);	if(field->fonttype == Font || field->fonttype == FontChar)	{	field->embeds = (unsigned short *)realloc(			field->embeds, (field->embedlen + len) * 2);		for(n = 0 ; n < len  ; n++)			field->embeds[field->embedlen++] = string[n] & 0xff;	}}voidSWFTextField_addUTF8Chars(SWFTextField field, const char *string){	unsigned short *widestring;	int n, len;	if(field->fonttype == FontChar || field->fonttype == Font)	{	len = UTF8ExpandString(string, &widestring);		field->embeds = (unsigned short *)realloc(			field->embeds, (field->embedlen + len) * 2);		for(n = 0 ; n < len  ; n++)			field->embeds[field->embedlen++] = widestring[n];		free(widestring);	}}/*	this is called when the textfield is added to the movie,	so no more changes to it from that point	other type may still add characters to the fontchar */void SWFTextField_setFontCharacter(SWFTextField field, SWFFontCharacter fontchar){	field->fonttype = FontChar;	field->font.fontchar = fontchar;	if((field->flags & SWFTEXTFIELD_NOEDIT) == 0)		SWFFontCharacter_addAllChars(fontchar);	else		SWFFontCharacter_addWideChars(fontchar, 				field->embeds, field->embedlen);}	voidSWFTextField_setScaledBounds(SWFTextField field, int width, int height){	field->width = width;	field->fieldHeight = height;	resetBounds(field);}voidSWFTextField_setFlags(SWFTextField field, int flags){	field->flags |= flags; }voidSWFTextField_setColor(SWFTextField field, byte r, byte g, byte b, byte a){	field->r = r;	field->g = g;	field->b = b;	field->a = a;	field->flags |= SWFTEXTFIELD_HASCOLOR;}voidSWFTextField_setVariableName(SWFTextField field, const char *name){	field->varName = strdup(name);}static voidSWFTextField_addStringOnly(SWFTextField field, const char *string){	int l;	for ( l=0; string[l]!='\0'; ++l )	{		if ( string[l] == '\n' )			++field->nLines;	}	if ( field->string )	{		field->string = (char*)realloc(field->string, strlen(field->string)+l+1);		strcat(field->string, string);	}	else		field->string = strdup(string);	field->flags |= SWFTEXTFIELD_HASTEXT;	resetBounds(field);}voidSWFTextField_addString(SWFTextField field, const char *string){	int l, n;	l = strlen(string);	SWFTextField_addStringOnly(field, string);	if(field->fonttype == FontChar || field->fonttype == Font) 	{	field->embeds = (unsigned short *)realloc(			field->embeds, (field->embedlen + l) * 2);		for(n = 0 ; n < l  ; n++)			field->embeds[field->embedlen++] = string[n] & 0xff;	}}voidSWFTextField_addUTF8String(SWFTextField field, const char *string){	unsigned short *widestring;	int l, n;	SWFTextField_addStringOnly(field, string);	if(field->fonttype == FontChar || field->fonttype == Font)	{	l = UTF8ExpandString(string, &widestring);		field->embeds = (unsigned short *)realloc(			field->embeds, (field->embedlen + l) * 2);		for(n = 0 ; n < l  ; n++)			field->embeds[field->embedlen++] = widestring[n];		free(widestring);	}}voidSWFTextField_setScaledFontHeight(SWFTextField field, int height){	field->fontHeight = height;	resetBounds(field);}voidSWFTextField_setScaledFieldHeight(SWFTextField field, int height){	field->fieldHeight = height;	resetBounds(field);}voidSWFTextField_setScaledWidth(SWFTextField field, int width){	field->width = width;	resetBounds(field);}voidSWFTextField_setScaledPadding(SWFTextField field, int padding){	field->padding = padding;	resetBounds(field);}voidSWFTextField_setScaledLeftMargin(SWFTextField field, int leftMargin){	field->leftMargin = leftMargin;	field->flags |= SWFTEXTFIELD_HASLAYOUT;}voidSWFTextField_setScaledRightMargin(SWFTextField field, int rightMargin){	field->rightMargin = rightMargin;	field->flags |= SWFTEXTFIELD_HASLAYOUT;}voidSWFTextField_setScaledIndentation(SWFTextField field, int indentation){	field->indentation = indentation;	field->flags |= SWFTEXTFIELD_HASLAYOUT;}voidSWFTextField_setScaledLineSpacing(SWFTextField field, int lineSpacing){	field->lineSpacing = lineSpacing;	field->flags |= SWFTEXTFIELD_HASLAYOUT;	resetBounds(field);}voidSWFTextField_setAlignment(SWFTextField field, SWFTextFieldAlignment alignment){	field->alignment = alignment;	field->flags |= SWFTEXTFIELD_HASLAYOUT;}voidSWFTextField_setLength(SWFTextField field, int length){	field->length = length;	field->flags |= SWFTEXTFIELD_HASLENGTH;}/* * Local variables: * tab-width: 2 * c-basic-offset: 2 * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区免费观看| 欧洲人成人精品| 色哟哟一区二区在线观看| 欧美日韩国产高清一区二区| 国产亚洲va综合人人澡精品| 亚洲一区电影777| 国产精品69毛片高清亚洲| 在线免费观看日本一区| 久久精品亚洲精品国产欧美kt∨| 亚洲愉拍自拍另类高清精品| 国产美女精品一区二区三区| 欧美日产在线观看| 综合激情成人伊人| 国产一区二区三区免费| 91精品中文字幕一区二区三区| 国产日韩欧美一区二区三区综合| 日本欧美大码aⅴ在线播放| 91免费看`日韩一区二区| 国产欧美中文在线| 久久爱www久久做| 日韩欧美国产综合一区| 亚洲第一会所有码转帖| 91麻豆视频网站| ㊣最新国产の精品bt伙计久久| 伊人夜夜躁av伊人久久| 99久久免费精品高清特色大片| 亚洲精品一线二线三线| 蜜桃视频一区二区| 欧美一区二区啪啪| 日韩影院在线观看| 日韩一级完整毛片| 麻豆国产欧美日韩综合精品二区| 在线播放中文一区| 日韩电影免费在线| 日韩午夜中文字幕| 精品一区二区三区在线观看 | 日本大香伊一区二区三区| 中文一区二区完整视频在线观看| 国产一区在线不卡| 一区二区成人在线| 欧美曰成人黄网| 亚洲国产美女搞黄色| 欧美人体做爰大胆视频| 美洲天堂一区二卡三卡四卡视频| 欧美日本高清视频在线观看| 秋霞av亚洲一区二区三| 日韩精品一区二区三区蜜臀| 国产一区在线看| 国产丝袜美腿一区二区三区| jlzzjlzz欧美大全| **欧美大码日韩| 欧美日韩一区久久| 狂野欧美性猛交blacked| 26uuu亚洲| 成人av片在线观看| 午夜视频在线观看一区二区三区| 精品少妇一区二区三区免费观看 | 欧美激情在线一区二区| 成人禁用看黄a在线| 又紧又大又爽精品一区二区| 欧美日韩精品欧美日韩精品| 紧缚奴在线一区二区三区| 欧美极品美女视频| 91麻豆国产在线观看| 日韩成人伦理电影在线观看| 久久九九久久九九| 在线视频国内自拍亚洲视频| 美女脱光内衣内裤视频久久网站 | 亚洲国产日韩一级| 日韩欧美的一区二区| 成人午夜免费视频| 日韩精品一二三区| 国产精品欧美久久久久一区二区 | 欧美一区二区观看视频| 成人黄色综合网站| 另类中文字幕网| 亚洲欧美aⅴ...| 精品久久久久久久人人人人传媒 | 肉色丝袜一区二区| 欧美极品xxx| 在线播放日韩导航| 波多野结衣一区二区三区| 日韩电影免费在线| 亚洲欧美日韩中文字幕一区二区三区| 91麻豆精品国产91| 91网站在线播放| 激情另类小说区图片区视频区| 亚洲精品日韩专区silk| 久久久久久久网| 欧美一区二区三区婷婷月色| 99久久国产综合精品女不卡| 毛片不卡一区二区| 亚洲一区二区视频在线| 国产精品久久久久久久久免费相片 | 亚洲精品一二三区| 精品久久久久久久久久久久久久久久久| 粉嫩av一区二区三区在线播放| 天天影视色香欲综合网老头| 亚洲蜜臀av乱码久久精品蜜桃| 国产亚洲精品aa| 精品国产3级a| 欧美一区二区三区公司| 欧美日韩久久久| 欧美少妇xxx| a级精品国产片在线观看| 黄色精品一二区| 蜜桃av一区二区在线观看| 亚洲国产另类精品专区| 亚洲免费电影在线| 亚洲欧美日韩小说| 亚洲欧美在线另类| 亚洲免费观看高清完整版在线观看 | 波多野结衣精品在线| 国产传媒久久文化传媒| 国产福利一区二区三区| 国产乱子轮精品视频| 黄色日韩网站视频| 国产一区 二区| 国产麻豆一精品一av一免费| 国产酒店精品激情| 国产精品一区2区| 丁香啪啪综合成人亚洲小说 | 一区二区三区在线播放| 亚洲精品视频在线观看免费| 亚洲一区二区三区中文字幕| 亚洲综合小说图片| 日韩精品乱码免费| 免费观看久久久4p| 国产美女视频91| 成人福利视频网站| 色欧美片视频在线观看| 欧美日韩视频在线第一区| 91麻豆精品国产自产在线观看一区 | 国内精品嫩模私拍在线| 国产成人在线色| 色先锋久久av资源部| 欧美日韩一区二区三区四区 | 欧美日韩中文字幕一区二区| 欧美久久久久久久久| 日韩你懂的在线观看| 国产免费观看久久| 一区二区久久久久久| 日本aⅴ精品一区二区三区| 激情综合色丁香一区二区| 丁香婷婷深情五月亚洲| 欧美综合天天夜夜久久| 日韩一级二级三级| 国产精品国产自产拍在线| 亚洲一区二区三区国产| 美女爽到高潮91| 99精品热视频| 欧美精品视频www在线观看| 26uuu色噜噜精品一区| 成人免费小视频| 麻豆91小视频| 色综合久久88色综合天天免费| 欧美一区二视频| 亚洲欧洲精品一区二区精品久久久| 亚洲成人av电影| 国产乱色国产精品免费视频| 欧美军同video69gay| 一区在线观看视频| 免费观看91视频大全| 色综合久久中文综合久久牛| 欧美成人猛片aaaaaaa| 亚洲精品视频一区二区| 国产老妇另类xxxxx| 欧美日韩一二区| 亚洲国产精品ⅴa在线观看| 视频一区中文字幕| 97精品电影院| 久久九九全国免费| 日韩国产在线一| 91香蕉视频mp4| 久久久精品国产免大香伊| 偷拍日韩校园综合在线| 北条麻妃一区二区三区| 久久久综合九色合综国产精品| 亚洲国产精品人人做人人爽| 成人午夜视频网站| 久久久久久久久久久久电影 | 亚洲成av人在线观看| 成人看片黄a免费看在线| 日韩精品一区二区三区中文精品| 亚洲一二三四区不卡| 91在线无精精品入口| 国产丝袜欧美中文另类| 国产一区欧美二区| 欧美成人一区二区三区片免费| 亚洲观看高清完整版在线观看| 91麻豆文化传媒在线观看| 国产精品久久久99| 国产91丝袜在线18| 国产午夜精品理论片a级大结局| 美女看a上一区| 精品国产乱码久久久久久久| 美女视频黄 久久| 精品国产a毛片| 国产成人啪午夜精品网站男同| 精品国产乱码久久久久久夜甘婷婷|