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

📄 htmlcell.h

📁 wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一个跨平台的 GUI 框架
💻 H
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        htmlcell.h// Purpose:     wxHtmlCell class is used by wxHtmlWindow/wxHtmlWinParser//              as a basic visual element of HTML page// Author:      Vaclav Slavik// RCS-ID:      $Id: htmlcell.h,v 1.66 2006/09/05 20:45:45 VZ Exp $// Copyright:   (c) 1999-2003 Vaclav Slavik// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef _WX_HTMLCELL_H_#define _WX_HTMLCELL_H_#include "wx/defs.h"#if wxUSE_HTML#include "wx/html/htmltag.h"#include "wx/html/htmldefs.h"#include "wx/window.h"class WXDLLIMPEXP_HTML wxHtmlWindowInterface;class WXDLLIMPEXP_HTML wxHtmlLinkInfo;class WXDLLIMPEXP_HTML wxHtmlCell;class WXDLLIMPEXP_HTML wxHtmlContainerCell;// wxHtmlSelection is data holder with information about text selection.// Selection is defined by two positions (beginning and end of the selection)// and two leaf(!) cells at these positions.class WXDLLIMPEXP_HTML wxHtmlSelection{public:    wxHtmlSelection()        : m_fromPos(wxDefaultPosition), m_toPos(wxDefaultPosition),          m_fromPrivPos(wxDefaultPosition), m_toPrivPos(wxDefaultPosition),          m_fromCell(NULL), m_toCell(NULL) {}    void Set(const wxPoint& fromPos, const wxHtmlCell *fromCell,             const wxPoint& toPos, const wxHtmlCell *toCell);    void Set(const wxHtmlCell *fromCell, const wxHtmlCell *toCell);    const wxHtmlCell *GetFromCell() const { return m_fromCell; }    const wxHtmlCell *GetToCell() const { return m_toCell; }    // these values are in absolute coordinates:    const wxPoint& GetFromPos() const { return m_fromPos; }    const wxPoint& GetToPos() const { return m_toPos; }    // these are From/ToCell's private data    const wxPoint& GetFromPrivPos() const { return m_fromPrivPos; }    const wxPoint& GetToPrivPos() const { return m_toPrivPos; }    void SetFromPrivPos(const wxPoint& pos) { m_fromPrivPos = pos; }    void SetToPrivPos(const wxPoint& pos) { m_toPrivPos = pos; }    void ClearPrivPos() { m_toPrivPos = m_fromPrivPos = wxDefaultPosition; }    bool IsEmpty() const        { return m_fromPos == wxDefaultPosition &&                 m_toPos == wxDefaultPosition; }private:    wxPoint m_fromPos, m_toPos;    wxPoint m_fromPrivPos, m_toPrivPos;    const wxHtmlCell *m_fromCell, *m_toCell;};enum wxHtmlSelectionState{    wxHTML_SEL_OUT,     // currently rendered cell is outside the selection    wxHTML_SEL_IN,      // ... is inside selection    wxHTML_SEL_CHANGING // ... is the cell on which selection state changes};// Selection state is passed to wxHtmlCell::Draw so that it can render itself// differently e.g. when inside text selection or outside it.class WXDLLIMPEXP_HTML wxHtmlRenderingState{public:    wxHtmlRenderingState() : m_selState(wxHTML_SEL_OUT) {}    void SetSelectionState(wxHtmlSelectionState s) { m_selState = s; }    wxHtmlSelectionState GetSelectionState() const { return m_selState; }    void SetFgColour(const wxColour& c) { m_fgColour = c; }    const wxColour& GetFgColour() const { return m_fgColour; }    void SetBgColour(const wxColour& c) { m_bgColour = c; }    const wxColour& GetBgColour() const { return m_bgColour; }private:    wxHtmlSelectionState  m_selState;    wxColour              m_fgColour, m_bgColour;};// HTML rendering customization. This class is used when rendering wxHtmlCells// as a callback:class WXDLLIMPEXP_HTML wxHtmlRenderingStyle{public:    virtual ~wxHtmlRenderingStyle() {}    virtual wxColour GetSelectedTextColour(const wxColour& clr) = 0;    virtual wxColour GetSelectedTextBgColour(const wxColour& clr) = 0;};// Standard style:class WXDLLIMPEXP_HTML wxDefaultHtmlRenderingStyle : public wxHtmlRenderingStyle{public:    virtual wxColour GetSelectedTextColour(const wxColour& clr);    virtual wxColour GetSelectedTextBgColour(const wxColour& clr);};// Information given to cells when drawing them. Contains rendering state,// selection information and rendering style object that can be used to// customize the output.class WXDLLIMPEXP_HTML wxHtmlRenderingInfo{public:    wxHtmlRenderingInfo() : m_selection(NULL), m_style(NULL) {}    void SetSelection(wxHtmlSelection *s) { m_selection = s; }    wxHtmlSelection *GetSelection() const { return m_selection; }    void SetStyle(wxHtmlRenderingStyle *style) { m_style = style; }    wxHtmlRenderingStyle& GetStyle() { return *m_style; }    wxHtmlRenderingState& GetState() { return m_state; }protected:    wxHtmlSelection      *m_selection;    wxHtmlRenderingStyle *m_style;    wxHtmlRenderingState m_state;};// Flags for wxHtmlCell::FindCellByPosenum{    wxHTML_FIND_EXACT             = 1,    wxHTML_FIND_NEAREST_BEFORE    = 2,    wxHTML_FIND_NEAREST_AFTER     = 4};// Superscript/subscript/normal script mode of a cellenum wxHtmlScriptMode{    wxHTML_SCRIPT_NORMAL,    wxHTML_SCRIPT_SUB,    wxHTML_SCRIPT_SUP};// ---------------------------------------------------------------------------// wxHtmlCell//                  Internal data structure. It represents fragments of parsed//                  HTML page - a word, picture, table, horizontal line and so//                  on.  It is used by wxHtmlWindow to represent HTML page in//                  memory.// ---------------------------------------------------------------------------class WXDLLIMPEXP_HTML wxHtmlCell : public wxObject{public:    wxHtmlCell();    virtual ~wxHtmlCell();    void SetParent(wxHtmlContainerCell *p) {m_Parent = p;}    wxHtmlContainerCell *GetParent() const {return m_Parent;}    int GetPosX() const {return m_PosX;}    int GetPosY() const {return m_PosY;}    int GetWidth() const {return m_Width;}    // Returns the maximum possible length of the cell.    // Call Layout at least once before using GetMaxTotalWidth()    virtual int GetMaxTotalWidth() const { return m_Width; }    int GetHeight() const {return m_Height;}    int GetDescent() const {return m_Descent;}    void SetScriptMode(wxHtmlScriptMode mode, long previousBase);    wxHtmlScriptMode GetScriptMode() const { return m_ScriptMode; }    long GetScriptBaseline() { return m_ScriptBaseline; }    // Formatting cells are not visible on the screen, they only alter    // renderer's state.    bool IsFormattingCell() const { return m_Width == 0 && m_Height == 0; }    const wxString& GetId() const { return m_id; }    void SetId(const wxString& id) { m_id = id; }    // returns the link associated with this cell. The position is position    // within the cell so it varies from 0 to m_Width, from 0 to m_Height    virtual wxHtmlLinkInfo* GetLink(int WXUNUSED(x) = 0,                                    int WXUNUSED(y) = 0) const        { return m_Link; }    // Returns cursor to be used when mouse is over the cell:    virtual wxCursor GetMouseCursor(wxHtmlWindowInterface *window) const;#if WXWIN_COMPATIBILITY_2_6    // this was replaced by GetMouseCursor, don't use in new code!    virtual wxCursor GetCursor() const;#endif    // return next cell among parent's cells    wxHtmlCell *GetNext() const {return m_Next;}    // returns first child cell (if there are any, i.e. if this is container):    virtual wxHtmlCell* GetFirstChild() const { return NULL; }    // members writing methods    virtual void SetPos(int x, int y) {m_PosX = x, m_PosY = y;}    void SetLink(const wxHtmlLinkInfo& link);    void SetNext(wxHtmlCell *cell) {m_Next = cell;}    // 1. adjust cell's width according to the fact that maximal possible width    //    is w.  (this has sense when working with horizontal lines, tables    //    etc.)    // 2. prepare layout (=fill-in m_PosX, m_PosY (and sometime m_Height)    //    members) = place items to fit window, according to the width w    virtual void Layout(int w);    // renders the cell    virtual void Draw(wxDC& WXUNUSED(dc),                      int WXUNUSED(x), int WXUNUSED(y),                      int WXUNUSED(view_y1), int WXUNUSED(view_y2),                      wxHtmlRenderingInfo& WXUNUSED(info)) {}    // proceed drawing actions in case the cell is not visible (scrolled out of    // screen).  This is needed to change fonts, colors and so on.    virtual void DrawInvisible(wxDC& WXUNUSED(dc),                               int WXUNUSED(x), int WXUNUSED(y),                               wxHtmlRenderingInfo& WXUNUSED(info)) {}    // This method returns pointer to the FIRST cell for that    // the condition    // is true. It first checks if the condition is true for this    // cell and then calls m_Next->Find(). (Note: it checks    // all subcells if the cell is container)    // Condition is unique condition identifier (see htmldefs.h)    // (user-defined condition IDs should start from 10000)    // and param is optional parameter    // Example : m_Cell->Find(wxHTML_COND_ISANCHOR, "news");    //   returns pointer to anchor news    virtual const wxHtmlCell* Find(int condition, const void* param) const;    // This function is called when mouse button is clicked over the cell.    // Returns true if a link is clicked, false otherwise.    //    // 'window' is pointer to wxHtmlWindowInterface of the window which    // generated the event.    // HINT: if this handling is not enough for you you should use    //       wxHtmlWidgetCell    virtual bool ProcessMouseClick(wxHtmlWindowInterface *window,                                   const wxPoint& pos,                                   const wxMouseEvent& event);#if WXWIN_COMPATIBILITY_2_6    // this was replaced by ProcessMouseClick, don't use in new code!    virtual void OnMouseClick(wxWindow *window,                              int x, int y, const wxMouseEvent& event);#endif    // This method used to adjust pagebreak position. The parameter is variable    // that contains y-coordinate of page break (= horizontal line that should    // not be crossed by words, images etc.). If this cell cannot be divided    // into two pieces (each one on another page) then it moves the pagebreak    // few pixels up.    //    // Returned value : true if pagebreak was modified, false otherwise    // Usage : while (container->AdjustPagebreak(&p)) {}    virtual bool AdjustPagebreak(int *pagebreak,                                 wxArrayInt& known_pagebreaks) const;    // Sets cell's behaviour on pagebreaks (see AdjustPagebreak). Default    // is true - the cell can be split on two pages    void SetCanLiveOnPagebreak(bool can) { m_CanLiveOnPagebreak = can; }    // Can the line be broken before this cell?    virtual bool IsLinebreakAllowed() const        { return !IsFormattingCell(); }    // Returns true for simple == terminal cells, i.e. not composite ones.    // This if for internal usage only and may disappear in future versions!    virtual bool IsTerminalCell() const { return true; }    // Find a cell inside this cell positioned at the given coordinates    // (relative to this's positions). Returns NULL if no such cell exists.    // The flag can be used to specify whether to look for terminal or    // nonterminal cells or both. In either case, returned cell is deepest    // cell in cells tree that contains [x,y].    virtual wxHtmlCell *FindCellByPos(wxCoord x, wxCoord y,                                  unsigned flags = wxHTML_FIND_EXACT) const;    // Returns absolute position of the cell on HTML canvas.    // If rootCell is provided, then it's considered to be the root of the    // hierarchy and the returned value is relative to it.    wxPoint GetAbsPos(wxHtmlCell *rootCell = NULL) const;    // Returns root cell of the hierarchy (i.e. grand-grand-...-parent that    // doesn't have a parent itself)    wxHtmlCell *GetRootCell() const;    // Returns first (last) terminal cell inside this cell. It may return NULL,    // but it is rare -- only if there are no terminals in the tree.    virtual wxHtmlCell *GetFirstTerminal() const        { return wxConstCast(this, wxHtmlCell); }    virtual wxHtmlCell *GetLastTerminal() const        { return wxConstCast(this, wxHtmlCell); }    // Returns cell's depth, i.e. how far under the root cell it is    // (if it is the root, depth is 0)    unsigned GetDepth() const;    // Returns true if the cell appears before 'cell' in natural order of    // cells (= as they are read). If cell A is (grand)parent of cell B,    // then both A.IsBefore(B) and B.IsBefore(A) always return true.    bool IsBefore(wxHtmlCell *cell) const;    // Converts the cell into text representation. If sel != NULL then    // only part of the cell inside the selection is converted.    virtual wxString ConvertToText(wxHtmlSelection *WXUNUSED(sel)) const        { return wxEmptyString; }protected:    // pointer to the next cell    wxHtmlCell *m_Next;    // pointer to parent cell    wxHtmlContainerCell *m_Parent;

⌨️ 快捷键说明

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