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

📄 html.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * html.h * * HyperText Markup Language stream classes. * * Portable Windows Library * * Copyright (c) 1993-2002 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: html.h,v $ * Revision 1.24  2005/03/19 02:52:53  csoutheren * Fix warnings from gcc 4.1-20050313 shapshot * * Revision 1.23  2002/11/06 22:47:23  robertj * Fixed header comment (copyright etc) * * Revision 1.22  2002/09/16 01:08:59  robertj * Added #define so can select if #pragma interface/implementation is used on *   platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. * * Revision 1.21  2001/02/13 04:39:08  robertj * Fixed problem with operator= in container classes. Some containers will *   break unless the copy is virtual (eg PStringStream's buffer pointers) so *   needed to add a new AssignContents() function to all containers. * * Revision 1.20  1999/03/09 08:01:46  robertj * Changed comments for doc++ support (more to come). * * Revision 1.19  1999/02/16 08:07:10  robertj * MSVC 6.0 compatibility changes. * * Revision 1.18  1998/09/23 06:19:27  robertj * Added open source copyright license. * * Revision 1.17  1997/07/08 13:15:31  robertj * DLL support. * * Revision 1.16  1997/06/16 13:18:02  robertj * Set Is() function to be const as it should have been. * * Revision 1.15  1996/08/17 10:00:18  robertj * Changes for Windows DLL support. * * Revision 1.14  1996/06/28 13:08:41  robertj * Changed PHTML class so can create html fragments. * Fixed nesting problem in tables. * * Revision 1.13  1996/06/01 04:18:40  robertj * Fixed bug in RadioButton, having 2 VALUE fields * * Revision 1.12  1996/04/14 02:52:02  robertj * Added hidden fields to HTML. * * Revision 1.11  1996/03/12 11:30:00  robertj * Fixed resetting of HTML output using operator=. * * Revision 1.10  1996/03/10 13:14:53  robertj * Simplified some of the classes and added catch all string for attributes. * * Revision 1.9  1996/03/03 07:36:44  robertj * Added missing public's to standard character attribute classes. * * Revision 1.8  1996/02/25 11:14:19  robertj * Radio button support for forms. * * Revision 1.7  1996/02/19 13:18:25  robertj * Removed MSC_VER test as now completely removed from WIN16 library. * * Revision 1.6  1996/02/08 11:50:38  robertj * More implementation. * * Revision 1.5  1996/02/03 11:01:25  robertj * Further implementation. * * Revision 1.4  1996/01/28 14:15:56  robertj * More comments. * * Revision 1.3  1996/01/28 02:45:38  robertj * Further implementation. * * Revision 1.2  1996/01/26 02:24:24  robertj * Further implemetation. * * Revision 1.1  1996/01/24 23:45:37  robertj * Initial revision * */#ifndef _PHTML#define _PHTML#ifdef P_USE_PRAGMA#pragma interface#endif//////////////////////////////////////////////////////////////////////////////// PHTML/** This class describes a HyperText markup Language string as used by the   World Wide Web and the #PURL# and #PHTTPSocket# class.      All of the standard stream I/O operators, manipulators etc will operate on   the PString class. */class PHTML : public PStringStream{  PCLASSINFO(PHTML, PStringStream)  public:    enum ElementInSet {      InHTML,      InHead,      InBody,      InTitle,      InHeading,      InDivision,      InPreFormat,      InAnchor,      InNote,      InAddress,      InBlockQuote,      InCredit,      InBold,      InItalic,      InTeleType,      InUnderline,      InStrikeThrough,      InBig,      InSmall,      InSubscript,      InSuperscript,      InEmphasis,      InCite,      InStrong,      InCode,      InSample,      InKeyboard,      InVariable,      InDefinition,      InQuote,      InAuthor,      InPerson,      InAcronym,      InAbbrev,      InInsertedText,      InDeletedText,      InList,      InListHeading,      InDefinitionTerm,      InTable,      InForm,      InSelect,      InTextArea,      NumElementsInSet    };    /** Construct a new HTML object. If a title is specified in the       constructor then the HEAD, TITLE and BODY elements are output and the       string is used in a H1 element.     */    PHTML(      ElementInSet initialState = NumElementsInSet    );    PHTML(      const char * cstr     // C string representation of the title string.    );    PHTML(      const PString & str   // String representation of the title string.    );    ~PHTML();    /** Restart the HTML string output using the specified value as the       new title. If <CODE>title</CODE> is empty then no HEAD or TITLE       elements are placed into the HTML.     */    PHTML & operator=(      const PHTML & html     // HTML stream to make a copy of.    ) { AssignContents(html); return *this; }    PHTML & operator=(      const PString & str    // String for title in restating HTML.    ) { AssignContents(str); return *this; }    PHTML & operator=(      const char * cstr    // String for title in restating HTML.    ) { AssignContents(PString(cstr)); return *this; }    PHTML & operator=(      char ch    // String for title in restating HTML.    ) { AssignContents(PString(ch)); return *this; }  // New functions for class.    BOOL Is(ElementInSet elmt) const;    void Set(ElementInSet elmt);    void Clr(ElementInSet elmt);    void Toggle(ElementInSet elmt);    class Element {      protected:        enum OptionalCRLF { NoCRLF, OpenCRLF, CloseCRLF, BothCRLF };        Element(          const char * nam,          const char * att,          ElementInSet elmt,          ElementInSet req,          OptionalCRLF opt        ) { name = nam; attr= att; inElement = elmt; reqElement = req; crlf = opt; }        virtual ~Element() { }        virtual void Output(PHTML & html) const;        virtual void AddAttr(PHTML & html) const;      private:        const char * name;        const char * attr;        ElementInSet inElement;        ElementInSet reqElement;        OptionalCRLF crlf;      friend ostream & operator<<(ostream & strm, const Element & elmt)        { elmt.Output((PHTML&)strm); return strm; }    };    class HTML : public Element {      public:        HTML(const char * attr = NULL);    };    class Head : public Element {      public:        Head();      protected:        virtual void Output(PHTML & html) const;    };    class Body : public Element {      public:        Body(const char * attr = NULL);      protected:        virtual void Output(PHTML & html) const;    };    class Title : public Element {      public:        Title();        Title(const char * titleCStr);        Title(const PString & titleStr);      protected:        virtual void Output(PHTML & html) const;      private:        const char * titleString;    };    class Banner : public Element {      public:        Banner(const char * attr = NULL);    };    class Division : public Element {      public:        Division(const char * attr = NULL);    };    class Heading : public Element {      public:        Heading(int number,                int sequence = 0,                int skip = 0,                const char * attr = NULL);        Heading(int number,                const char * image,                int sequence = 0,                int skip = 0,                const char * attr = NULL);        Heading(int number,                const PString & imageStr,                int sequence = 0,                int skip = 0,                const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        int num;        const char * srcString;        int seqNum, skipSeq;    };    class BreakLine : public Element {      public:        BreakLine(const char * attr = NULL);    };    class Paragraph : public Element {      public:        Paragraph(const char * attr = NULL);    };    class PreFormat : public Element {      public:        PreFormat(int widthInChars = 0,                  const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        int width;    };    class HotLink : public Element {      public:        HotLink(const char * href = NULL, const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        const char * hrefString;    };    class Target : public Element {      public:        Target(const char * name = NULL, const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        const char * nameString;    };    class ImageElement : public Element {      protected:        ImageElement(const char * nam,                     const char * attr,                     ElementInSet elmt,                     ElementInSet req,                     OptionalCRLF opt,                     const char * image);        virtual void AddAttr(PHTML & html) const;        const char * srcString;    };    class Image : public ImageElement {      public:        Image(const char * src,              int width = 0,              int height = 0,              const char * attr = NULL);        Image(const char * src,              const char * alt,              int width = 0,              int height = 0,              const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        const char * altString;        int width, height;    };    class HRule : public ImageElement {      public:        HRule(const char * image = NULL, const char * attr = NULL);    };    class Note : public ImageElement {      public:        Note(const char * image = NULL, const char * attr = NULL);    };    class Address : public Element {      public:        Address(const char * attr = NULL);    };    class BlockQuote : public Element {      public:        BlockQuote(const char * attr = NULL);    };    class Credit : public Element {      public:        Credit(const char * attr = NULL);    };    class SetTab : public Element {      public:        SetTab(const char * id, const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        const char * ident;    };    class Tab : public Element {      public:        Tab(int indent, const char * attr = NULL);        Tab(const char * id, const char * attr = NULL);      protected:        virtual void AddAttr(PHTML & html) const;      private:        const char * ident;        int indentSize;    };    class Bold : public Element {      public: Bold() : Element("B", NULL, InBold, InBody, NoCRLF) { }    };    class Italic : public Element {      public: Italic() : Element("I", NULL, InItalic, InBody, NoCRLF) { }    };    class TeleType : public Element {      public: TeleType() : Element("TT", NULL, InTeleType, InBody, NoCRLF) { }    };    class Underline : public Element {      public: Underline() : Element("U", NULL, InUnderline, InBody, NoCRLF) { }    };    class StrikeThrough : public Element {      public: StrikeThrough()                      : Element("S", NULL, InStrikeThrough, InBody, NoCRLF) { }    };    class Big : public Element {      public: Big() : Element("BIG", NULL, InBig, InBody, NoCRLF) { }    };    class Small : public Element {      public: Small() : Element("SMALL", NULL, InSmall, InBody, NoCRLF) { }    };    class Subscript : public Element {      public: Subscript()                        : Element("SUB", NULL, InSubscript, InBody, NoCRLF) { }    };    class Superscript : public Element {      public: Superscript()                      : Element("SUP", NULL, InSuperscript, InBody, NoCRLF) { }    };    class Emphasis : public Element {      public: Emphasis() : Element("EM", NULL, InEmphasis, InBody, NoCRLF) { }    };    class Cite : public Element {      public: Cite() : Element("CITE", NULL, InCite, InBody, NoCRLF) { }    };    class Strong : public Element {      public: Strong() : Element("STRONG", NULL, InStrong, InBody, NoCRLF) { }    };    class Code : public Element {      public: Code() : Element("CODE", NULL, InCode, InBody, NoCRLF) { }    };    class Sample : public Element {      public: Sample() : Element("SAMP", NULL, InSample, InBody, NoCRLF) { }    };    class Keyboard : public Element {      public: Keyboard() : Element("KBD", NULL, InKeyboard, InBody, NoCRLF) { }    };    class Variable : public Element {      public: Variable() : Element("VAR", NULL, InVariable, InBody, NoCRLF) { }    };    class Definition : public Element {      public: Definition()                       : Element("DFN", NULL, InDefinition, InBody, NoCRLF) { }    };    class Quote : public Element {      public: Quote() : Element("Q", NULL, InQuote, InBody, NoCRLF) { }    };    class Author : public Element {      public: Author() : Element("AU", NULL, InAuthor, InBody, NoCRLF) { }    };    class Person : public Element {      public: Person() : Element("PERSON", NULL, InPerson, InBody, NoCRLF) { }    };    class Acronym : public Element {      public: Acronym():Element("ACRONYM", NULL, InAcronym, InBody, NoCRLF) { }    };    class Abbrev : public Element {      public: Abbrev() : Element("ABBREV", NULL, InAbbrev, InBody, NoCRLF) { }    };    class InsertedText : public Element {      public: InsertedText()

⌨️ 快捷键说明

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