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

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

?? visible_position.h

?? It is WEB browser core module with source code. Very good!
?? H
字號:
/*
 * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
 */

#ifndef KHTML_EDITING_VISIBLE_POSITION_H
#define KHTML_EDITING_VISIBLE_POSITION_H

#include <qstring.h>

#include "xml/dom_position.h"
#include "text_affinity.h"

namespace DOM {
    class NodeImpl;
    class Range;
    class RangeImpl;
}

namespace khtml {

#define VP_DEFAULT_AFFINITY DOWNSTREAM

class VisiblePosition
{
public:
    typedef DOM::NodeImpl NodeImpl;
    typedef DOM::Position Position;

    enum EInitHint { 
        INIT_UP, 
        INIT_DOWN
    };

    VisiblePosition() { m_affinity = VP_DEFAULT_AFFINITY; };
    VisiblePosition(NodeImpl *, long offset, EAffinity, EInitHint initHint=INIT_DOWN);
    VisiblePosition(const Position &, EAffinity, EInitHint initHint=INIT_DOWN);
    VisiblePosition(const VisiblePosition &);

    void clear() { m_deepPosition.clear(); }

    bool isNull() const { return m_deepPosition.isNull(); }
    bool isNotNull() const { return m_deepPosition.isNotNull(); }

    Position position() const { return rangeCompliantEquivalent(m_deepPosition); }
    Position deepEquivalent() const { return m_deepPosition; }
    EAffinity affinity() const { assert(m_affinity == UPSTREAM || m_affinity == DOWNSTREAM); return m_affinity; }
    void setAffinity(EAffinity affinity) { m_affinity = affinity; }
    
    Position downstreamDeepEquivalent() const;

    friend bool operator==(const VisiblePosition &a, const VisiblePosition &b);
    friend bool operator!=(const VisiblePosition &a, const VisiblePosition &b);

    friend bool isEqualIgnoringAffinity(const VisiblePosition &a, const VisiblePosition &b);
    friend bool isNotEqualIgnoringAffinity(const VisiblePosition &a, const VisiblePosition &b);

    // next() and previous() will increment/decrement by a character cluster.
    VisiblePosition next() const;
    VisiblePosition previous() const;

    bool isLastInBlock() const;

    QChar character() const;
    
    void debugPosition(const char *msg = "") const;

#ifndef NDEBUG
    void formatForDebugger(char *buffer, unsigned length) const;
#endif
    
private:
    void init(const Position &, EInitHint, EAffinity);
    void initUpstream(const Position &);
    void initDownstream(const Position &);

    static Position deepEquivalent(const Position &);
    static Position rangeCompliantEquivalent(const Position &);

    static long maxOffset(const NodeImpl *);
    static bool isAtomicNode(const NodeImpl *);
    
    static Position previousVisiblePosition(const Position &);
    static Position nextVisiblePosition(const Position &);

    static Position previousPosition(const Position &);
    static Position nextPosition(const Position &);

    static bool atStart(const Position &);
    static bool atEnd(const Position &);

    static bool isCandidate(const Position &);
        
    Position m_deepPosition;
    EAffinity m_affinity;
};

inline bool operator==(const VisiblePosition &a, const VisiblePosition &b)
{
    return a.m_deepPosition == b.m_deepPosition && a.m_affinity == b.m_affinity;
}
 
inline bool operator!=(const VisiblePosition &a, const VisiblePosition &b)
{
    return !(a == b);
}

DOM::Range makeRange(const VisiblePosition &start, const VisiblePosition &end);
bool setStart(DOM::Range &, const VisiblePosition &start);
bool setStart(DOM::RangeImpl *, const VisiblePosition &start);
bool setEnd(DOM::Range &, const VisiblePosition &start);
bool setEnd(DOM::RangeImpl *, const VisiblePosition &start);
VisiblePosition startVisiblePosition(const DOM::Range &, EAffinity);
VisiblePosition startVisiblePosition(const DOM::RangeImpl *, EAffinity);
VisiblePosition endVisiblePosition(const DOM::Range &, EAffinity);
VisiblePosition endVisiblePosition(const DOM::RangeImpl *, EAffinity);

void setAffinityUsingLinePosition(VisiblePosition &);

bool visiblePositionsOnDifferentLines(const VisiblePosition &, const VisiblePosition &);
bool visiblePositionsInDifferentBlocks(const VisiblePosition &, const VisiblePosition &);
bool isFirstVisiblePositionOnLine(const VisiblePosition &);
bool isFirstVisiblePositionInParagraph(const VisiblePosition &);
bool isFirstVisiblePositionInBlock(const VisiblePosition &);
bool isFirstVisiblePositionInNode(const VisiblePosition &, const DOM::NodeImpl *);
bool isLastVisiblePositionOnLine(const VisiblePosition &);
bool isLastVisiblePositionInParagraph(const VisiblePosition &);
bool isLastVisiblePositionInBlock(const VisiblePosition &);
bool isLastVisiblePositionInNode(const VisiblePosition &, const DOM::NodeImpl *);

} // namespace khtml

#endif // KHTML_EDITING_VISIBLE_POSITION_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一级片在线观看| 美腿丝袜一区二区三区| 久久久国产精品午夜一区ai换脸| 欧美另类久久久品| 欧美日韩中文字幕一区| 欧美一a一片一级一片| 在线观看视频91| 91精品啪在线观看国产60岁| 欧美一区二区三区免费大片 | 欧美一区二区三区男人的天堂| 欧美午夜一区二区三区免费大片| 欧美三级日韩三级| 91精品国产综合久久久久久久久久| 欧美一区二区日韩一区二区| 久久日韩精品一区二区五区| 欧美经典一区二区三区| 国产精品久久精品日日| 亚洲欧洲综合另类| 日韩中文字幕一区二区三区| 国产在线精品一区二区夜色 | 中文字幕国产一区二区| 亚洲视频在线观看三级| 午夜电影网亚洲视频| 激情小说亚洲一区| 91啪亚洲精品| 日韩欧美一区二区免费| 亚洲欧洲色图综合| 日日夜夜精品视频免费| 成人影视亚洲图片在线| 欧美日韩不卡视频| 国产日韩精品一区二区三区| 亚洲自拍偷拍欧美| 国产风韵犹存在线视精品| 欧美亚洲综合色| 精品久久久久香蕉网| 一区二区三区四区精品在线视频| 日本在线不卡一区| 成人免费高清视频在线观看| 欧美精品高清视频| 国产精品福利av| 精品在线视频一区| 精品视频999| 欧美国产精品专区| 久久91精品国产91久久小草| 色哟哟国产精品免费观看| 久久夜色精品一区| 日日夜夜免费精品| 在线一区二区三区做爰视频网站| 亚洲精品一区二区三区四区高清| 亚洲一卡二卡三卡四卡无卡久久| 国产精品一区二区免费不卡| 69成人精品免费视频| 樱花草国产18久久久久| 懂色av一区二区三区免费观看| 日韩一级在线观看| 亚洲午夜免费电影| 色综合天天综合网天天看片| 国产精品欧美久久久久一区二区 | 26uuu成人网一区二区三区| 一区二区三区在线免费| 粉嫩av亚洲一区二区图片| 欧美成人精品二区三区99精品| 亚洲国产精品久久久久秋霞影院| 91在线精品一区二区| 欧美激情资源网| 国产成人午夜精品影院观看视频| 2021中文字幕一区亚洲| 久久99久国产精品黄毛片色诱| 欧美肥胖老妇做爰| 天天色图综合网| 欧美日韩一区不卡| 视频在线在亚洲| 欧美精品第一页| 日韩av电影免费观看高清完整版 | 中文字幕第一区二区| 国产一区二区91| 久久亚洲精精品中文字幕早川悠里 | 成人在线综合网站| 日韩久久一区二区| 欧洲另类一二三四区| 亚洲国产视频网站| 日韩一区二区三区免费看 | 91丨porny丨首页| 亚洲婷婷在线视频| 欧美色图第一页| 午夜精品一区二区三区电影天堂 | 99久久国产综合精品女不卡| 亚洲欧美怡红院| 色综合色综合色综合| 一区二区三区精品久久久| 欧美丝袜第三区| 蜜臀久久99精品久久久画质超高清| 日韩欧美的一区二区| 激情五月婷婷综合网| 欧美极品美女视频| 在线观看成人小视频| 日韩va欧美va亚洲va久久| 久久综合久久鬼色中文字| 国产91色综合久久免费分享| 亚洲精品欧美激情| 欧美电影免费观看高清完整版| 国产精品乡下勾搭老头1| 亚洲丝袜另类动漫二区| 欧美日韩1234| 国产一区二区看久久| 亚洲男同性恋视频| 日韩欧美一区二区视频| 不卡一区在线观看| 午夜精品福利久久久| 国产欧美一区二区三区鸳鸯浴| 色综合天天在线| 美女视频网站久久| 亚洲天堂a在线| 日韩女优视频免费观看| 色综合久久中文字幕| 毛片一区二区三区| 亚洲日本在线观看| 久久嫩草精品久久久精品一| 欧美视频一区二区三区四区| 成人精品国产福利| 免费成人av在线播放| 亚洲一区二区三区自拍| 欧美激情资源网| 日韩一区二区三| 欧美在线观看视频在线| 99热这里都是精品| 国内欧美视频一区二区 | 麻豆91免费观看| 亚洲免费av网站| 国产精品久久久久久久第一福利| 欧美xxx久久| 欧美电影一区二区三区| 在线观看亚洲a| 色噜噜夜夜夜综合网| 成人一区二区视频| 国产精品一区二区三区99| 免费久久精品视频| 肉丝袜脚交视频一区二区| 亚洲国产欧美日韩另类综合| 国产精品午夜在线| 亚洲国产精品ⅴa在线观看| 精品对白一区国产伦| 日韩欧美成人午夜| 日韩欧美在线123| 欧美一区二区三区日韩| 日韩三级视频中文字幕| 欧美精品在线观看播放| 制服丝袜中文字幕亚洲| 欧美男同性恋视频网站| 91精品福利在线一区二区三区| 欧美日韩一二区| 欧美一三区三区四区免费在线看| 欧美日韩精品系列| 欧美精品久久99久久在免费线| 在线成人高清不卡| 欧美白人最猛性xxxxx69交| 精品盗摄一区二区三区| 久久精品亚洲精品国产欧美kt∨ | 国产ts人妖一区二区| 国产精品18久久久久久久网站| 韩国成人福利片在线播放| 国产大陆a不卡| 波多野结衣精品在线| 99亚偷拍自图区亚洲| 日本久久电影网| 欧美日韩国产欧美日美国产精品| 69p69国产精品| 久久―日本道色综合久久| 国产精品久久久久久久浪潮网站 | 国产精品国产三级国产aⅴ中文 | 91精品国产91久久久久久最新毛片 | 国产一区二区毛片| 不卡一二三区首页| 在线观看av不卡| 精品国产乱码久久久久久牛牛| 国产精品久久久久影院老司| 亚洲成人自拍偷拍| 国产一区二区三区视频在线播放| 99精品视频一区二区三区| 欧美午夜电影在线播放| 日韩免费电影一区| 综合久久久久综合| 蜜桃91丨九色丨蝌蚪91桃色| 波多野结衣在线一区| 欧美性受极品xxxx喷水| 精品对白一区国产伦| 有坂深雪av一区二区精品| 精品无码三级在线观看视频| 色婷婷av一区二区三区软件| 精品人在线二区三区| 一区二区三区在线播放| 国产精品18久久久久久久久| 精品视频1区2区| 中文字幕一区二区三中文字幕| 日本人妖一区二区| 99re成人在线| 久久奇米777| 蜜臀久久99精品久久久久久9| 91碰在线视频| 亚洲国产精品成人久久综合一区|