summaryrefslogtreecommitdiff
path: root/layout/base/nsStyleChangeList.h
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2014-05-21 11:38:25 +0200
committerwolfbeast <mcwerewolf@gmail.com>2014-05-21 11:38:25 +0200
commitd25ba7d760b017b038e5aa6c0a605b4a330eb68d (patch)
tree16ec27edc7d5f83986f16236d3a36a2682a0f37e /layout/base/nsStyleChangeList.h
parenta942906574671868daf122284a9c4689e6924f74 (diff)
downloadpalemoon-gre-d25ba7d760b017b038e5aa6c0a605b4a330eb68d.tar.gz
Recommit working copy to repo with proper line endings.
Diffstat (limited to 'layout/base/nsStyleChangeList.h')
-rw-r--r--layout/base/nsStyleChangeList.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/layout/base/nsStyleChangeList.h b/layout/base/nsStyleChangeList.h
new file mode 100644
index 000000000..a1443ac06
--- /dev/null
+++ b/layout/base/nsStyleChangeList.h
@@ -0,0 +1,72 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* 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/. */
+
+/*
+ * a list of the recomputation that needs to be done in response to a
+ * style change
+ */
+
+#ifndef nsStyleChangeList_h___
+#define nsStyleChangeList_h___
+
+#include "mozilla/Attributes.h"
+
+#include "nsError.h"
+#include "nsChangeHint.h"
+
+class nsIFrame;
+class nsIContent;
+
+// XXX would all platforms support putting this inside the list?
+struct nsStyleChangeData {
+ nsIFrame* mFrame;
+ nsIContent* mContent;
+ nsChangeHint mHint;
+};
+
+static const uint32_t kStyleChangeBufferSize = 10;
+
+// Note: nsStyleChangeList owns a reference to
+// nsIContent pointers in its list.
+class nsStyleChangeList {
+public:
+ nsStyleChangeList();
+ ~nsStyleChangeList();
+
+ int32_t Count(void) const {
+ return mCount;
+ }
+
+ /**
+ * Fills in pointers without reference counting.
+ */
+ nsresult ChangeAt(int32_t aIndex, nsIFrame*& aFrame, nsIContent*& aContent,
+ nsChangeHint& aHint) const;
+
+ /**
+ * Fills in a pointer to the list entry storage (no reference counting
+ * involved).
+ */
+ nsresult ChangeAt(int32_t aIndex, const nsStyleChangeData** aChangeData) const;
+
+ nsresult AppendChange(nsIFrame* aFrame, nsIContent* aContent, nsChangeHint aHint);
+
+ void Clear(void);
+
+protected:
+ nsStyleChangeList& operator=(const nsStyleChangeList& aCopy);
+ bool operator==(const nsStyleChangeList& aOther) const;
+
+ nsStyleChangeData* mArray;
+ int32_t mArraySize;
+ int32_t mCount;
+ nsStyleChangeData mBuffer[kStyleChangeBufferSize];
+
+private:
+ nsStyleChangeList(const nsStyleChangeList&) MOZ_DELETE;
+};
+
+
+#endif /* nsStyleChangeList_h___ */