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

📄 table.cpp

📁 wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一个跨平台的 GUI 框架
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        table.cpp// Purpose:     Utilities for manipulating tables// Author:      Julian Smart// Modified by: Wlodzimiez ABX Skiba 2003/2004 Unicode support//              Ron Lee// Created:     01/01/99// RCS-ID:      $Id: table.cpp,v 1.8 2005/09/23 12:56:34 MR Exp $// Copyright:   (c) Julian Smart// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////// For compilers that support precompilation, includes "wx.h".#include "wx/wxprec.h"#ifdef __BORLANDC__#pragma hdrstop#endif#ifndef WX_PRECOMP#endif#include "wx/hash.h"#ifdef new#undef new#endif#if wxUSE_IOSTREAMH#include <iostream.h>#include <fstream.h>#else#include <iostream>#include <fstream>#endif#include <ctype.h>#include "tex2any.h"#include "table.h"ColumnData TableData[40];bool inTabular = false;bool startRows = false;bool tableVerticalLineLeft = false;bool tableVerticalLineRight = false;int noColumns = 0;   // Current number of columns in tableint ruleTop = 0;int ruleBottom = 0;int currentRowNumber = 0;/* * Parse table argument * */bool ParseTableArgument(wxChar *value){  noColumns = 0;  int i = 0;  int len = wxStrlen(value);  bool isBorder = false;  while (i < len)  {    int ch = value[i];    if (ch == '|')    {      i ++;      isBorder = true;    }    else if (ch == 'l')    {      TableData[noColumns].leftBorder = isBorder;      TableData[noColumns].rightBorder = false;      TableData[noColumns].justification = 'l';      TableData[noColumns].width = 2000; // Estimate      TableData[noColumns].absWidth = false;//      TableData[noColumns].spacing = ??      noColumns ++;      i ++;      isBorder = false;    }    else if (ch == 'c')    {      TableData[noColumns].leftBorder = isBorder;      TableData[noColumns].rightBorder = false;      TableData[noColumns].justification = 'c';      TableData[noColumns].width = defaultTableColumnWidth; // Estimate      TableData[noColumns].absWidth = false;//      TableData[noColumns].spacing = ??      noColumns ++;      i ++;      isBorder = false;    }    else if (ch == 'r')    {      TableData[noColumns].leftBorder = isBorder;      TableData[noColumns].rightBorder = false;      TableData[noColumns].justification = 'r';      TableData[noColumns].width = 2000; // Estimate      TableData[noColumns].absWidth = false;//      TableData[noColumns].spacing = ??      noColumns ++;      i ++;      isBorder = false;    }    else if (ch == 'p')    {      i ++;      int j = 0;      wxChar numberBuf[50];      ch = value[i];      if (ch == '{')      {        i++;        ch = value[i];      }      while ((i < len) && (isdigit(ch) || ch == '.'))      {        numberBuf[j] = (wxChar)ch;        j ++;        i ++;        ch = value[i];      }      // Assume we have 2 characters for units      numberBuf[j] = value[i];      j ++; i++;      numberBuf[j] = value[i];      j ++; i++;      numberBuf[j] = 0;      if (value[i] == '}') i++;      TableData[noColumns].leftBorder = isBorder;      TableData[noColumns].rightBorder = false;      TableData[noColumns].justification = 'l';      TableData[noColumns].width = 20*ParseUnitArgument(numberBuf);      TableData[noColumns].absWidth = true;//      TableData[noColumns].spacing = ??      noColumns ++;      isBorder = false;    }    else    {      wxChar *buf = new wxChar[wxStrlen(value) + 80];      wxSnprintf(buf, wxStrlen(value) + 80, _T("Tabular first argument \"%s\" too complex!"), value);      OnError(buf);      delete[] buf;      return false;    }  }  if (isBorder)    TableData[noColumns-1].rightBorder = true;  return true;}

⌨️ 快捷键说明

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