blob: 1dc01b06a17ac90323f07a1ccb2c1e9f948de5f1 [file] [log] [blame]
typedef unsigned int PRUint32;
typedef int PRInt32;
typedef unsigned long PRUint64;
typedef int PRIntn;
typedef PRIntn PRBool;
struct nsRect {
nsRect(const nsRect& aRect) { }
};
enum nsCompatibility { eCompatibility_NavQuirks = 3 };
class gfxContext;
typedef PRUint64 nsFrameState;
class nsPresContext {
public:
nsCompatibility CompatibilityMode() const { }
};
class nsStyleContext {
public:
PRBool HasTextDecorations() const;
};
class nsIFrame {
public:
nsPresContext* PresContext() const;
nsStyleContext* GetStyleContext() const;
nsFrameState GetStateBits() const;
nsRect GetOverflowRect() const;
};
class nsFrame : public nsIFrame { };
class nsLineList_iterator { };
class nsLineList {
public:
typedef nsLineList_iterator iterator;
};
class gfxSkipCharsIterator { };
class gfxTextRun {
public:
class PropertyProvider { };
};
class nsTextFrame : public nsFrame
{
virtual nsRect ComputeTightBounds(gfxContext* aContext) const;
gfxSkipCharsIterator EnsureTextRun(gfxContext* aReferenceContext = 0L,
nsIFrame* aLineContainer = 0L,
const nsLineList::iterator* aLine = 0L,
PRUint32* aFlowEndInTextRun = 0L);
};
class PropertyProvider : public gfxTextRun::PropertyProvider
{
public:
PropertyProvider(nsTextFrame* aFrame, const gfxSkipCharsIterator& aStart);
PRInt32 mLength[64];
};
nsRect nsTextFrame::ComputeTightBounds(gfxContext* aContext) const
{
if ((GetStyleContext()->HasTextDecorations()
&& eCompatibility_NavQuirks == PresContext()->CompatibilityMode())
|| (GetStateBits() & (nsFrameState(1) << (23))))
return GetOverflowRect();
gfxSkipCharsIterator iter = const_cast<nsTextFrame*>(this)->EnsureTextRun();
PropertyProvider provider(const_cast<nsTextFrame*>(this), iter);
}