diff options
Diffstat (limited to 'layout/style/RuleNodeCacheConditions.cpp')
-rw-r--r-- | layout/style/RuleNodeCacheConditions.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/layout/style/RuleNodeCacheConditions.cpp b/layout/style/RuleNodeCacheConditions.cpp new file mode 100644 index 000000000..2dbb6c344 --- /dev/null +++ b/layout/style/RuleNodeCacheConditions.cpp @@ -0,0 +1,53 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=78: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* + * an object that stores the result of determining whether a style struct that + * was computed can be cached in the rule tree, and if so, what the cache + * key is + */ + +#include "RuleNodeCacheConditions.h" + +#include "nsStyleContext.h" +#include "WritingModes.h" + +using namespace mozilla; + +bool +RuleNodeCacheConditions::Matches(nsStyleContext* aStyleContext) const +{ + MOZ_ASSERT(Cacheable()); + if ((mBits & eHaveFontSize) && + mFontSize != aStyleContext->StyleFont()->mFont.size) { + return false; + } + if ((mBits & eHaveWritingMode) && + (GetWritingMode() != WritingMode(aStyleContext).GetBits())) { + return false; + } + return true; +} + +#ifdef DEBUG +void +RuleNodeCacheConditions::List() const +{ + printf("{ "); + bool first = true; + if (mBits & eHaveFontSize) { + printf("FontSize(%d)", mFontSize); + first = false; + } + if (mBits & eHaveWritingMode) { + if (!first) { + printf(", "); + } + printf("WritingMode(0x%x)", GetWritingMode()); + } + printf(" }"); +} +#endif |