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

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

?? updfwriter.pas

?? DelphiDoc is a program for automatic generation of documentation on a Delphi-Project. At the momen
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
{  JADD - Just Another DelphiDoc: Documentation from Delphi Source Code

Copyright (C) 2003-2008   Gerold Veith
Originally based upon Takeshi Kanno's PowerPdf:
Copyright (c) 1999-2001 Takezou. <takeshi_kanno@est.hi-ho.ne.jp>

This file is part of JADD - Just Another DelphiDoc.

DelphiDoc is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as
published by the Free Software Foundation.

DelphiDoc 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, see <http://www.gnu.org/licenses/>.
}

unit UPDFWriter;

{Contains the base types to write a PDF file. It's not very general, but all
 that is needed to generate a PDF file with the documentation of pascal
 files. ~[link TPDFWriter] is the class needed to write PDF files,
 ~[link TType1Font] describes PDF type 1 fonts, only these fonts are supported,
 because only these fonts are guaranteed to be available in PDF viewers.~[br]

 PDF means ~[em Portable Document Format]; it is an open format
 copyrighted by ~[linkExtern http://www.adobe.com/ Adobe]. Read more
 ~[linkExtern http://www.adobe.com/products/acrobat/adobepdf.html about this
 format] on their website. PDF files can be viewed on several
 platforms with different viewers. The best known is of course Adobe's
 ~[linkExtern http://www.adobe.com/products/acrobat/readermain.html Acrobat
 Reader]. The used version of PDF is 1.2 (current: 1.5), that is quite
 old and it can be read with Acrobat Reader Version 1.3 (current: 1.6)
 (at least it should).
}

interface

uses Windows, Classes,
{$IFNDEF LINUX}
     Graphics
{$ELSE}
     QGraphics
{$ENDIF}
     ;


      //the string used to indicate the end of a line in the PDF file;
      //beware when changing this, that only #10 or #13#10 is allowed or we
      //get problems after "stream"
const NewLine: String = #10;


type
  //the different fonts available
  TPDFFontType = (
                  pftCourier,   //a Courier/Courier New font (fixed width)
                  pftHelvetica, //Arial/Helv(etica) font
                  pftTimes);    //Times/Times New Roman font

  //the available font styles
  TPDFFontStyle = (
                   pfsBold,     //bold font
                   pfsItalic);  //italy font
  //a set of font styles
  TPDFFontStyles = set of TPDFFontStyle;


  //sets the rendering mode of the text
  TPDFTextRenderingMode = (
                           ptrmFill,               //fill the text
                           ptrmStroke,             //stroke the text
                           ptrmFillStroke,         //fill and stroke the text
                           ptrmInvisible,          //invisible text
                           ptrmFillClipping,       //fill and add for clipping
                           ptrmStrokeClipping,     //stroke, add for clipping
                           ptrmFillStrokeClipping, //fill, stroke, clipping
                           ptrmClipping);          //just add for clipping

  //determines how the document should appear when opened
  TPDFPageMode = (
                  pmUseNone,     //show nothing?
                  pmUseOutlines, //show the outline
                  pmUseThumbs,   //show the thumbs
                  pmFullScreen); //show in full screen
  //determines how the document should appear when opened
  TPDFPageModes = set of TPDFPageMode;

const
  //the names to write in the PDF file to indicate how the document should
  //appear when opened
  PDFPageModeNames: array[TPDFPageMode] of string = (
                          'UseNone', 'UseOutlines', 'UseThumbs', 'FullScreen');


  //the character specifying the bullet symbol
  SymbolBullet = 'A';



type
  TPDFColor = TColor;            //a PDF color


  TPDFObjectNumber = Integer;    //a number of an object in the PDF file

  //a PDF number value, for instance to express a position or a length
  TPDFValue = Single;
  //pointer on one or more PDF number values
  PPDFValue = ^TPDFValue;

  TPDFPoint = record              //a point inside a page of a PDF document
    x: TPDFValue;                   //vertical position in the page
    y: TPDFValue;                   //horizontal position in the page
  end;

  TPDFRect = record              //a rect inside a page of a PDF document
    Left: TPDFValue;               //left side of the rect in the page
    Top: TPDFValue;                //top side of the rect in the page
    Right: TPDFValue;              //right side of the rect in the page
    Bottom: TPDFValue;             //bottom side of the rect in the page
  end;

  //a dynamic array of values inside a PDF file
  TPDFValueArray = array of TPDFValue;



  //kind of links of annotations/actions
  TLinkType = (
               ltThisDoc,  //link to a destination inside the same PDF document
               ltURI,      //a link to a general URI (in the WWW)
               ltFile);    //a link to a file









   { * * *  ***  * * *  ***   TType1Font   ***  * * *  ***  * * *  }



  //the widths of all printable characters in a font
  TCharWidths = array[#32..#255] of SmallInt;


  {A class whose objects describe different type 1 fonts. Type 1 fonts are the
   standard fonts, and only a few fonts of this type are guaranteed to be
   available in all viewers. }
  TType1Font = class
  private
    FWidths: TCharWidths;   //width of the characters in the font
    FDefaultWidth: Integer; //default width of characters
    //maximum ascent of characters of the font from the base line
    FAscent: Integer;
    //maximum descent of characters of the font from the base line
    FDescent: Integer;
  public
    //Creates the font object and sets its values.
    constructor Create(const Widths: TCharWidths; DefaultWidth: Integer;
                       Ascent, Descent: Integer);


    //Returns the width of the text in this font.
    function TextWidth(const Text: String): TPDFValue;
    //Returns the total width of the characters in this font.
    function TextWidthCharacters(Characters: PChar; Count: Integer): TPDFValue;

    //Returns the number of fitting characters of the text in the given length
    //in this font.
    function FittingText(const Text: String; AWidth: TPDFValue): Integer;

    //Gets the widths of the specified characters.
    procedure GetCharacterWidths(const Text: String;
                                 var Widths: array of TPDFValue;
                                 StartIndex: Integer);

    property Widths: TCharWidths read FWidths;
    property DefaultWidth: Integer read FDefaultWidth;
    property Ascent: Integer read FAscent;
    property Descent: Integer read FDescent;
  end;











   { * * *  ***  * * *  ***   TPDFWriter   ***  * * *  ***  * * *  }


  {This class can be used to generate a simple PDF file. Only the three default
   fonts with the two styles are supported. An outline can be generated.
   Compression is also supported. A name tree for named destinations is used
   for heavy linked files.

   PDF means ~[em Portable Document Format]; it is an open format
   copyrighted by ~[linkExtern http://www.adobe.com/ Adobe]. Read more
   ~[linkExtern http://www.adobe.com/products/acrobat/adobepdf.html about this
   format] on their website. PDF files can be viewed on several
   platforms with different viewers. The best known is of course Adobe's
   ~[linkExtern http://www.adobe.com/products/acrobat/readermain.html Acrobat
   Reader]. The used version of PDF is 1.2 (current: 1.5), that is quite
   old and it can be read with Acrobat Reader Version 1.3 (current: 1.6)
   (at least it should). }
  TPDFWriter = class
  private
    //the stream to write the PDF file to
    FStream: TStream;

    //if compression of the content of the pages should be enabled
    FCompression: Boolean;


    //the width of the pages in the file
    FPageWidth: TPDFValue;
    //the height of the pages in the file
    FPageHeight: TPDFValue;


    //list of the positions of all PDF objects in the file
    FObjPositions: TList;

    //the content of the currently written page
    FPageStream: TMemoryStream;

    //the current font object
    FFont: TType1Font;
    //the current size of the font
    FSize: TPDFValue;
    //the current font/font type/font family
    FFontType: TPDFFontType;
    //the current font style
    FFontStyle: TPDFFontStyles;
    //the current drawing color, especially that of the text
    FFontColor: TColor;
    //whether a new text region has begun and no font has been set so far,
    //or whether a symbol has just been written and it has to be re-set
    FBegunText: Boolean;






    //all available fonts in the file (will always be added to the PDF file)
    FFonts: array[TPDFFontType] of array[0..3] of TType1Font;



    //position in ~[link FPageStream] to insert text afterwards
    //(beginning of current link)
    //~deprecated without replacement, calculate the needed adjustment
    //            beforehand!
    FInsertionPoint: Integer;

    //the names and PDF object numbers of the images in the PDF file
    FImages: TStringList;
    //the sizes of all images in the PDF file (entrys are TShortPoints)
    FImageSizes: TList;
    //the registered names of the images to be drawn in the current page
    FImageReferences: TStringList;
    //the commands to draw the images in current page
    FImageDrawCommands: String;

    //the commands to draw lines etc. in the current page
    FDrawCommands: String;

    //list of destinations in the current page
    FDestinations: TStringList;
    //list of names of the destinations in the current page
    FDestinationNames: TStringList;
    //list of aliases for the destinations in the current page
    FDestinationAliases: TStringList;
    //list of annotations in the current page
    FAnnotations: TStringList;


    //position in ~[link FPageGroups] to insert new group of pages
    FPageGroupInsertPos: Integer;         //(will automatically be incremented)
    //the groups of pages
    FPageGroups: array of TPDFObjectNumber;
    //the number of pages in each group of pages
    FPageCountGroups: array of Integer;

    //the current part of the tree of pages that has not yet been written~[br]
    //the second dimension will be of size ~[link FPagesTreeNumberInNodes], the
    //number of valid entries is in ~[link FPageTreeObjectsCounter];~[br]
    //FPageTreeObjects[0][i] contains the references of the already written
    //pages, the other levels contain references to Pages-arrays with
    //references to the Pages-arrays of the lower levels, or in case of index 1
    //the references to the pages; the last of those entries hasn't been
    //written yet, it will be at the end or when the level below it is filled
    FPageTreeObjects: array of array of TPDFObjectNumber;
    //the fill level of the current part of the tree of pages that has not yet
    //been written~[br]
    //the number of valid object numbers in ~[link FPageTreeObjects], has
    //always the same size as its first dimension
    FPageTreeObjectsCounter: array of Integer;
    //number of PDF object references per array in tree of pages;
    //has to be set before the first page is ended
    FPagesTreeNumberInNodes: Integer;


    //list of names and PDF object numbers of destinations in the PDF file
    FDestNameTreeItems: TStringList;
    //number of PDF object references per array in name tree of destinations

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区国产豹纹内裤在线| 老司机精品视频在线| 一区二区三区在线免费视频| 亚洲成av人片一区二区梦乃| 国产激情精品久久久第一区二区| 欧美成人vr18sexvr| 麻豆成人久久精品二区三区小说| 欧美电视剧在线观看完整版| 精品一区二区久久| √…a在线天堂一区| 在线免费不卡视频| 天天操天天综合网| 精品盗摄一区二区三区| 成人av在线播放网站| 亚洲精品国久久99热| 777亚洲妇女| 国产99久久久国产精品潘金 | 亚洲美女屁股眼交3| 欧美视频一区二| 精品综合久久久久久8888| 国产网站一区二区| 欧美亚洲综合在线| 久久国产麻豆精品| 中文字幕日韩一区| 4438x成人网最大色成网站| 国产91丝袜在线18| 亚洲3atv精品一区二区三区| 国产日韩欧美在线一区| 色哦色哦哦色天天综合| 黄色日韩网站视频| 一区二区三区在线影院| 久久午夜国产精品| 欧美日韩在线精品一区二区三区激情| 青青青爽久久午夜综合久久午夜| 国产精品私房写真福利视频| 欧美日韩高清在线| 国产99久久久久久免费看农村| 亚洲国产乱码最新视频| 国产午夜精品久久久久久免费视 | 国产清纯在线一区二区www| 欧美性一级生活| 粉嫩高潮美女一区二区三区 | 亚洲第一福利视频在线| 欧美一区二区三区精品| 99r精品视频| 免费成人在线影院| 亚洲综合av网| 久久久影视传媒| 国产福利精品导航| 日韩精品一二区| 亚洲乱码中文字幕| 国产精品私人自拍| 亚洲精品在线免费观看视频| 欧美日韩国产一区| 99精品国产99久久久久久白柏| 久久99国产精品麻豆| 亚洲高清免费观看| 亚洲黄色片在线观看| 中文字幕一区二区日韩精品绯色| 精品少妇一区二区三区在线播放 | 玖玖九九国产精品| 亚洲在线视频免费观看| 日韩毛片精品高清免费| 久久精品日韩一区二区三区| 欧美一级免费观看| 欧美日韩免费电影| 欧美性色aⅴ视频一区日韩精品| 成人小视频免费在线观看| 国产在线精品一区二区不卡了| 午夜精品一区二区三区电影天堂| 亚洲丝袜制服诱惑| 亚洲啪啪综合av一区二区三区| 国产精品丝袜91| 国产精品久久久久永久免费观看| 久久午夜电影网| 国产日韩欧美亚洲| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产精品久久久久久久久动漫| 久久美女艺术照精彩视频福利播放| 欧美日产在线观看| 一本色道久久综合精品竹菊| 国产精品乱人伦中文| 久久久久久夜精品精品免费| 欧美va亚洲va| 久久久精品欧美丰满| 国产日韩一级二级三级| 国产精品久久久久久一区二区三区| 国产精品萝li| 亚洲另类春色校园小说| 亚洲一区日韩精品中文字幕| 亚洲v日本v欧美v久久精品| 三级成人在线视频| 久久国产精品色| 成人免费av网站| 欧美综合视频在线观看| 8v天堂国产在线一区二区| 精品福利在线导航| 国产精品久久久久久久久搜平片 | 亚洲精品中文在线影院| 亚洲成av人片一区二区三区| 精品一区二区三区在线播放 | 久久精品国产精品亚洲精品| 国产精品伊人色| 色综合色综合色综合| 555夜色666亚洲国产免| 久久久电影一区二区三区| 亚洲人吸女人奶水| 青草av.久久免费一区| 成人午夜大片免费观看| 欧美日韩综合在线| www日韩大片| 亚洲欧美一区二区三区国产精品 | 奇米888四色在线精品| 亚洲亚洲精品在线观看| 亚洲精品免费一二三区| 亚洲国产一区二区在线播放| 全部av―极品视觉盛宴亚洲| 久久国产乱子精品免费女| 91麻豆免费视频| 欧美日韩国产一级片| 欧美激情一区二区三区四区| 亚洲欧洲中文日韩久久av乱码| 日本成人中文字幕在线视频| 国产美女精品在线| 欧美视频一区二区三区| 精品区一区二区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲一区二区三区四区不卡| 国产一区二区三区观看| 欧美在线免费播放| 久久久久国产精品厨房| 亚洲v精品v日韩v欧美v专区| 国产麻豆一精品一av一免费| 99精品欧美一区二区三区小说| 欧美综合色免费| 中文字幕一区二区在线观看| 亚洲制服欧美中文字幕中文字幕| 国产suv精品一区二区三区| 欧美日韩精品一区视频| 久久精品人人做| 麻豆精品视频在线观看| 成人免费av资源| 久久久久成人黄色影片| 亚洲国产精品久久一线不卡| 成人免费三级在线| 欧美偷拍一区二区| 亚洲欧美影音先锋| 久久99精品视频| 欧美一级免费大片| 国产精品美女久久久久aⅴ| 日韩激情中文字幕| 欧美日韩中字一区| 中文字幕亚洲电影| 蜜桃av一区二区在线观看| 91视频一区二区| 亚洲精品一区二区三区蜜桃下载 | 亚洲美女一区二区三区| 加勒比av一区二区| 91理论电影在线观看| 国产色婷婷亚洲99精品小说| 日韩精品成人一区二区在线| 7777精品伊人久久久大香线蕉完整版 | 国产精品久99| 国产成人在线观看免费网站| 91麻豆精品国产自产在线| 一区二区三区在线看| 97se亚洲国产综合自在线不卡| 久久影院视频免费| 国产精品1区二区.| 日韩免费视频一区| 狠狠色丁香九九婷婷综合五月| 欧美三级电影网站| 日本不卡视频一二三区| 3d动漫精品啪啪| 午夜精品福利在线| 欧美一区二区视频在线观看2022| 一区二区三区四区在线播放| 欧美性大战久久久久久久| 亚洲美女免费在线| 欧美日韩国产大片| 国产亚洲福利社区一区| 丁香婷婷综合五月| 亚洲乱码中文字幕| 在线影院国内精品| 日本欧美一区二区三区| 91精品国产入口| 国产精品自拍三区| 欧美v日韩v国产v| 国产福利精品导航| 怡红院av一区二区三区| 欧美午夜不卡在线观看免费| 欧美aaaaaa午夜精品| 欧美电影免费观看高清完整版在| 国产盗摄一区二区三区| 亚洲精品久久久久久国产精华液| 91美女在线看| 美女网站一区二区| 久久久久国产精品厨房| 波多野结衣视频一区| 亚洲你懂的在线视频|