⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fofibase.cc

📁 swf文件查看工具,能够看flash文件的格式
💻 CC
字号:
//========================================================================//// FoFiBase.cc//// Copyright 1999-2003 Glyph & Cog, LLC////========================================================================#include <aconf.h>#ifdef USE_GCC_PRAGMAS#pragma implementation#endif#include <stdio.h>#include "gmem.h"#include "FoFiBase.h"//------------------------------------------------------------------------// FoFiBase//------------------------------------------------------------------------FoFiBase::FoFiBase(char *fileA, int lenA, GBool freeFileDataA) {  fileData = file = (Guchar *)fileA;  len = lenA;  freeFileData = freeFileDataA;}FoFiBase::~FoFiBase() {  if (freeFileData) {    gfree(fileData);  }}char *FoFiBase::readFile(char *fileName, int *fileLen) {  FILE *f;  char *buf;  int n;  if (!(f = fopen(fileName, "rb"))) {    return NULL;  }  fseek(f, 0, SEEK_END);  n = (int)ftell(f);  fseek(f, 0, SEEK_SET);  buf = (char *)gmalloc(n);  if ((int)fread(buf, 1, n, f) != n) {    gfree(buf);    fclose(f);    return NULL;  }  fclose(f);  *fileLen = n;  return buf;}int FoFiBase::getS8(int pos, GBool *ok) {  int x;  if (pos < 0 || pos >= len) {    *ok = gFalse;    return 0;  }  x = file[pos];  if (x & 0x80) {    x |= ~0xff;  }  return x;}int FoFiBase::getU8(int pos, GBool *ok) {  if (pos < 0 || pos >= len) {    *ok = gFalse;    return 0;  }  return file[pos];}int FoFiBase::getS16BE(int pos, GBool *ok) {  int x;  if (pos < 0 || pos+1 >= len) {    *ok = gFalse;    return 0;  }  x = file[pos];  x = (x << 8) + file[pos+1];  if (x & 0x8000) {    x |= ~0xffff;  }  return x;}int FoFiBase::getU16BE(int pos, GBool *ok) {  int x;  if (pos < 0 || pos+1 >= len) {    *ok = gFalse;    return 0;  }  x = file[pos];  x = (x << 8) + file[pos+1];  return x;}int FoFiBase::getS32BE(int pos, GBool *ok) {  int x;  if (pos < 0 || pos+3 >= len) {    *ok = gFalse;    return 0;  }  x = file[pos];  x = (x << 8) + file[pos+1];  x = (x << 8) + file[pos+2];  x = (x << 8) + file[pos+3];  if (x & 0x80000000) {    x |= ~0xffffffff;  }  return x;}Guint FoFiBase::getU32BE(int pos, GBool *ok) {  Guint x;  if (pos < 0 || pos+3 >= len) {    *ok = gFalse;    return 0;  }  x = file[pos];  x = (x << 8) + file[pos+1];  x = (x << 8) + file[pos+2];  x = (x << 8) + file[pos+3];  return x;}Guint FoFiBase::getUVarBE(int pos, int size, GBool *ok) {  Guint x;  int i;  if (pos < 0 || pos + size > len) {    *ok = gFalse;    return 0;  }  x = 0;  for (i = 0; i < size; ++i) {    x = (x << 8) + file[pos + i];  }  return x;}GBool FoFiBase::checkRegion(int pos, int size) {  return pos >= 0 &&         pos + size >= pos &&         pos + size <= len;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -