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

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

?? output.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: output.c,v 1.22 2008/01/18 10:02:27 vapour Exp $ */#include <stdlib.h>#include <stdio.h>#include <string.h>#include "output.h"#include "error.h"#include "libming.h"struct SWFOutput_s{	SWFOutput next;	byte *buffer;	byte *pos;	int buffersize;	int free;	int bitpos;};SWFOutputnewSWFOutput(){	SWFOutput out = (SWFOutput) malloc(sizeof(struct SWFOutput_s));	/* If malloc failed, return NULL to signify this */	if (NULL == out)		return NULL;	out->next = NULL;	out->buffer = (byte*) malloc(OUTPUT_BUFFER_INCREMENT);	/* If malloc failed, return NULL to signify this */	if (NULL == out->buffer)	{		free(out);		return NULL;	}	out->pos = out->buffer;	*(out->pos) = 0;	out->buffersize = out->free = OUTPUT_BUFFER_INCREMENT;	out->bitpos = 0;	return out;}/* same as above but with specified buffer size,	 use if you have an upper limit to how big this'll get */SWFOutputnewSizedSWFOutput(int size){	SWFOutput out = (SWFOutput)malloc(sizeof(struct SWFOutput_s));	/* If malloc failed, return NULL to signify this */	if (NULL == out)		return NULL;	out->next = NULL;	out->buffer = (byte*) malloc(size+1);	/* If malloc failed, return NULL to signify this */	if (NULL == out->buffer)	{		free(out);		return NULL;	}	out->pos = out->buffer;	*(out->pos) = 0;	out->buffersize = out->free = size+1;	out->bitpos = 0;	return out;}voidSWFOutput_writeToMethod(SWFOutput out, SWFByteOutputMethod method, void *data){	int i, l;	SWFOutput o = out;	byte *buffer;	SWFOutput_byteAlign(out);	while ( o != NULL )	{		buffer = o->buffer;		l = o->pos - buffer;		for(i=0; i<l; ++i)			method(buffer[i], data);		o = o->next;	}}voiddestroySWFOutput(SWFOutput out){	SWFOutput o = out, next;	while(o != NULL)	{		next = o->next;		free(o->buffer);		free(o);		o = next;	}}voidSWFOutput_grow(SWFOutput out){	int num = out->pos - out->buffer; /* in case buffer gets displaced.. */	unsigned char* newbuf =		(unsigned char*)realloc(out->buffer, out->buffersize + OUTPUT_BUFFER_INCREMENT);	if ( newbuf != out->buffer )		out->pos = newbuf+num;	out->buffer = newbuf;	out->buffersize += OUTPUT_BUFFER_INCREMENT;	out->free += OUTPUT_BUFFER_INCREMENT;}intSWFOutput_getLength(SWFOutput out){	int size = 0;	while ( out!=NULL )	{		size += (out->pos) - (out->buffer) + (out->bitpos>0 ? 1 : 0);		out = out->next;	}	return size;}/* make sure there's enough space for bytes bytes */voidSWFOutput_checkSize(SWFOutput out, int bytes){	if ( bytes >= out->free )	{		int New = OUTPUT_BUFFER_INCREMENT *							((bytes-out->free-1)/OUTPUT_BUFFER_INCREMENT + 1);		int num = out->pos - out->buffer; /* in case buffer gets displaced.. */		unsigned char *newbuf = (unsigned char*)realloc(out->buffer, out->buffersize+New);		if ( newbuf != out->buffer )			out->pos = newbuf + num;		out->buffer = newbuf;		out->buffersize += New;		out->free += New;	}}voidSWFOutput_byteAlign(SWFOutput out){	if ( out->bitpos > 0 )	{		SWFOutput_checkSize(out, 1);		++out->pos;		--out->free;		out->bitpos = 0;	}}voidSWFOutput_setNext(SWFOutput out, SWFOutput next){	out->next = next;}SWFOutputSWFOutput_getNext(SWFOutput out){	return out->next;}byte*SWFOutput_getBuffer(SWFOutput out){	return out->buffer;}byte*SWFOutput_getCurPos(SWFOutput out){	return out->pos;}voidSWFOutput_writeBits(SWFOutput out, int data, int bits){	int bitpos = out->bitpos;	if ( bitpos == 0 )		*(out->pos) = 0;	SWFOutput_checkSize(out, (bits+bitpos+7)/8);	while ( bits > 0 )	{		if ( bits + bitpos >= 8 )		{			*(out->pos) += (data >> (bits+bitpos-8)) & 0xff;			bits -= 8-bitpos;			++out->pos;			*(out->pos) = 0;			--out->free;			bitpos = 0;		}		else		{			*(out->pos) += (data << (8-bits-bitpos)) & 0xff;			bitpos += bits;			bits = 0;		}	}	out->bitpos = bitpos;}voidSWFOutput_writeSBits(SWFOutput out, int data, int bits){	if ( data < 0 )		data = (1<<bits)+data;	SWFOutput_writeBits(out, data, bits);}voidSWFOutput_writeUInt8(SWFOutput out, int data){	/* think we have to byte align when we write whole bytes */	SWFOutput_byteAlign(out);	SWFOutput_checkSize(out, 1);	*(out->pos) = data;	++out->pos;	--out->free;}voidSWFOutput_truncate(SWFOutput out, int size){	SWF_assert(size < out->buffersize);	out->pos = out->buffer + size;	out->free = out->buffersize - size;}voidSWFOutput_writeSInt8(SWFOutput out, int data){	if ( data < 0 )		data = (1<<8)+data;	SWFOutput_writeUInt8(out, data);}voidSWFOutput_writeUInt16(SWFOutput out, int data){	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);}voidSWFOutput_writeSInt16(SWFOutput out, int data){	if ( data < 0 )		data = (1<<16)+data;	SWFOutput_writeUInt8(out, data%256);	data >>= 8;	SWFOutput_writeUInt8(out, data%256);}voidSWFOutput_writeUInt32(SWFOutput out, long data){	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);}voidSWFOutput_writeSInt32(SWFOutput out, long data){	if ( data < 0 )		data = (0xffffffff + data) + 1;	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);	data >>= 8;	SWFOutput_writeUInt8(out, data&0xff);}voidSWFOutput_writeBuffer(SWFOutput out, unsigned char *buffer, int bytes){	SWFOutput_checkSize(out, bytes);	memcpy(out->pos, buffer, bytes);	out->pos += bytes;	out->free -= bytes;}intSWFOutput_numBits(int num){	int i=0;	while ( num > 0 )	{		num >>= 1;		++i;	}	return i;}intSWFOutput_numSBits(int num){	if ( num < 0 )		// XXX - one more than necessary if num = -2^n:		return SWFOutput_numBits(-num)+1;	else		return SWFOutput_numBits(num)+1;}voidSWFOutput_writeString(SWFOutput out, const unsigned char *string){	char c;	SWFOutput_byteAlign(out);	if ( string )	{		while ( (c = *(string++)) != 0 )			SWFOutput_writeUInt8(out, c);	}	SWFOutput_writeUInt8(out, 0);}void SWFOutput_writeFixed(SWFOutput out, double val){	unsigned int fixed;	fixed = val * (1<<16);	SWFOutput_writeUInt32(out, fixed);}void SWFOutput_writeFixed8(SWFOutput out, double val){	unsigned int fixed;	fixed = 0xffff & (int)(val * (1<<8));	SWFOutput_writeUInt16(out, fixed);}voidSWFOutput_writeFloat(SWFOutput out, float f){	unsigned char *p = (unsigned char *)&f;#if SWF_LITTLE_ENDIAN	SWFOutput_writeUInt8(out, p[0]);	SWFOutput_writeUInt8(out, p[1]);	SWFOutput_writeUInt8(out, p[2]);	SWFOutput_writeUInt8(out, p[3]);#else	SWFOutput_writeUInt8(out, p[3]);	SWFOutput_writeUInt8(out, p[2]);	SWFOutput_writeUInt8(out, p[1]);	SWFOutput_writeUInt8(out, p[0]);#endif	}voidSWFOutput_writeDouble(SWFOutput out, double d){	unsigned char *p = (unsigned char *)&d;#if SWF_LITTLE_ENDIAN	SWFOutput_writeUInt8(out, p[4]);	SWFOutput_writeUInt8(out, p[5]);	SWFOutput_writeUInt8(out, p[6]);	SWFOutput_writeUInt8(out, p[7]);	SWFOutput_writeUInt8(out, p[0]);	SWFOutput_writeUInt8(out, p[1]);	SWFOutput_writeUInt8(out, p[2]);	SWFOutput_writeUInt8(out, p[3]);#else	SWFOutput_writeUInt8(out, p[3]);	SWFOutput_writeUInt8(out, p[2]);	SWFOutput_writeUInt8(out, p[1]);	SWFOutput_writeUInt8(out, p[0]);	SWFOutput_writeUInt8(out, p[7]);	SWFOutput_writeUInt8(out, p[6]);	SWFOutput_writeUInt8(out, p[5]);	SWFOutput_writeUInt8(out, p[4]);#endif}#define FLOAT_SIGN_MASK 	0x80000000#define FLOAT_SIGN_SHIFT 	31#define FLOAT_EXP_MASK		0x7f800000#define FLOAT_EXP_SHIFT 	23#define FLOAT_MAT_MASK		0x7fff#define FLOAT_BIAS		127;/* * FLOAT16 - half precision * 1 - bit sign * 5 - bit exp / bias = 16 * 10 - bit mantissa */#define FLOAT16_SIGN_SHIFT 	15#define FLOAT16_EXP_SHIFT	11#define FLOAT16_BIAS		16voidSWFOutput_writeFloat16(SWFOutput out, float f){	unsigned char buf[4];	float *pf = (float *)buf;	int sig, exp, mat;	unsigned int i;	*pf = f;	i = (unsigned int)*buf;		sig = (FLOAT_SIGN_MASK & i) >> FLOAT_SIGN_SHIFT;	exp = (FLOAT_EXP_MASK & i) >> FLOAT_EXP_SHIFT;	exp -= FLOAT_BIAS;	mat = (FLOAT_MAT_MASK &i);	exp += FLOAT16_BIAS;	exp &= 0x1f;		// reduce mantissa to 11-bit	mat >>= 12;	i = sig << FLOAT16_SIGN_SHIFT | exp << FLOAT16_EXP_SHIFT | (mat & 0x7ff);	SWFOutput_writeUInt16(out, i);}#define ENC_HIGH_BIT 0x80#define ENC_BYTE_MASK 0x7fvoid SWFOutput_writeEncUInt32(SWFOutput out, unsigned int i){	if(i == 0) // special case 	{		SWFOutput_writeUInt8(out, 0);		return;	}	while(i > 0)	{		unsigned char temp = i & ENC_BYTE_MASK;		i = i >> 7;		if(i > 0)			temp |= ENC_HIGH_BIT;		SWFOutput_writeUInt8(out, temp);	}}/* * Local variables: * tab-width: 2 * c-basic-offset: 2 * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人无v码亚洲福利| 欧美va日韩va| 成人免费精品视频| 韩国三级在线一区| 久草在线在线精品观看| 久久精品国产99| 久久不见久久见免费视频7| 日韩高清欧美激情| 蜜桃av一区二区在线观看| 免费不卡在线视频| 黄页视频在线91| 国产精品亚洲视频| 国产精品一二三区在线| 成人免费观看男女羞羞视频| 成人短视频下载| 在线观看国产91| 欧美性受xxxx黑人xyx性爽| 欧美精品在线一区二区| 日韩三级高清在线| 国产婷婷精品av在线| 国产精品视频一二三| 一区二区三区欧美亚洲| 亚洲国产精品久久艾草纯爱| 日韩精品久久理论片| 国内精品在线播放| 9i在线看片成人免费| 欧美在线视频全部完| 欧美v日韩v国产v| 中文字幕中文字幕在线一区 | 五月婷婷久久综合| 免费看日韩精品| 成人精品鲁一区一区二区| 色av一区二区| 久久久亚洲精华液精华液精华液| 国产清纯白嫩初高生在线观看91 | 久久久精品国产免费观看同学| 国产精品乱码妇女bbbb| 午夜精品福利在线| 成人国产电影网| 欧美一级一区二区| 亚洲欧美日韩中文字幕一区二区三区 | 国产一区二区在线视频| 色综合久久久久综合体| 欧美大片拔萝卜| 一个色在线综合| 国产乱码精品一区二区三区五月婷| 91小视频在线| 久久精品在线观看| 亚瑟在线精品视频| eeuss鲁一区二区三区| 日韩一区二区三免费高清| 综合久久久久久久| 国产精品自拍毛片| 337p亚洲精品色噜噜噜| 亚洲欧美视频一区| 国产白丝网站精品污在线入口| 欧美在线影院一区二区| 中文字幕一区在线| 国产成人免费9x9x人网站视频| 欧美伦理视频网站| 一区二区三区在线视频免费观看| 国产美女精品在线| 在线综合+亚洲+欧美中文字幕| 一级日本不卡的影视| 91美女视频网站| 亚洲欧美日韩在线| 色综合久久久久综合体| 一区二区视频在线| 色综合久久中文字幕| 亚洲卡通欧美制服中文| 色av成人天堂桃色av| 亚洲精品videosex极品| 97se亚洲国产综合在线| 亚洲欧洲性图库| 99re热视频这里只精品| 伊人婷婷欧美激情| 欧美精品精品一区| 免费在线观看日韩欧美| 日韩欧美成人激情| 久久精品国产999大香线蕉| 日韩美女一区二区三区| 亚洲国产日韩a在线播放| 国产欧美1区2区3区| 国产精品资源网站| 91在线免费看| ...xxx性欧美| 国产美女主播视频一区| 日韩欧美自拍偷拍| 午夜久久久影院| 91免费观看视频| 欧美日韩不卡一区二区| 亚洲自拍与偷拍| 国产精品一区二区在线观看网站| 欧美性猛片xxxx免费看久爱| 欧美日韩一区二区三区免费看| 最新不卡av在线| 粉嫩一区二区三区性色av| 在线成人av影院| 亚洲免费观看高清完整版在线观看| 国产精品一区二区不卡| 国产欧美一区二区精品秋霞影院| 麻豆精品在线播放| 日韩一区二区三区三四区视频在线观看| 亚洲国产欧美一区二区三区丁香婷 | 中文字幕中文字幕在线一区| 不卡在线观看av| 亚洲三级在线免费观看| 色婷婷综合五月| 亚洲国产精品麻豆| 欧美三级一区二区| 蜜臀av性久久久久蜜臀av麻豆 | 91在线视频网址| 色欧美乱欧美15图片| 国产欧美综合色| www.色综合.com| 亚洲在线视频免费观看| 色悠久久久久综合欧美99| 玉米视频成人免费看| 91老师片黄在线观看| 亚洲一二三区不卡| 日韩欧美在线网站| 一区二区三区四区激情| 91精品国产综合久久精品性色| 久久99国产精品久久99| 国产日韩av一区| 国产精品亚洲一区二区三区在线| 日韩一级大片在线| 成人少妇影院yyyy| 亚洲精品中文在线观看| 日韩一级黄色大片| 亚洲一本大道在线| 在线成人免费观看| 国产九色sp调教91| 玉米视频成人免费看| 精品日韩欧美一区二区| 日日夜夜精品视频免费 | 亚洲自拍偷拍图区| 欧美www视频| 99精品欧美一区二区三区小说| 午夜视频一区在线观看| 91精品国产91久久久久久一区二区 | 麻豆精品一区二区| 日韩毛片视频在线看| 欧美亚洲精品一区| 久久日韩精品一区二区五区| 国产一区视频在线看| 久久免费视频一区| 精品日韩在线观看| 91国内精品野花午夜精品| 黑人巨大精品欧美黑白配亚洲| 亚洲欧洲另类国产综合| 欧美一级国产精品| 欧洲一区二区三区在线| 国产毛片精品一区| 日本亚洲三级在线| 亚洲综合色成人| 精品国产精品一区二区夜夜嗨 | 91网站黄www| 亚州成人在线电影| 国产精品久久久久久亚洲伦| 日韩一区二区不卡| www.成人在线| 久久精品72免费观看| 亚洲伊人色欲综合网| 久久婷婷国产综合精品青草| 欧美性做爰猛烈叫床潮| 风流少妇一区二区| 国产精品国产三级国产专播品爱网 | 国内外成人在线视频| 亚洲一区二区三区四区的| 国产日产欧美精品一区二区三区| 日韩三级在线观看| 欧美日韩大陆一区二区| 91色在线porny| 紧缚捆绑精品一区二区| 日韩电影在线观看电影| 亚洲与欧洲av电影| ㊣最新国产の精品bt伙计久久| 精品福利一区二区三区 | 一区二区三区欧美激情| 亚洲女同ⅹxx女同tv| 中文字幕免费观看一区| 欧美精品一区在线观看| 精品美女一区二区三区| 国产一区二区伦理| 久久超碰97中文字幕| 亚洲愉拍自拍另类高清精品| 日韩国产高清在线| 免费在线观看成人| 久久精品国产免费看久久精品| 秋霞国产午夜精品免费视频| 图片区小说区区亚洲影院| 亚洲成人综合网站| 2021中文字幕一区亚洲| 欧美一区二区在线免费观看| 白白色亚洲国产精品| 成人美女在线视频| 99久久精品国产网站| 91丝袜呻吟高潮美腿白嫩在线观看| 91国内精品野花午夜精品|