Line data Source code
1 : /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 : * This Source Code Form is subject to the terms of the Mozilla Public
3 : * License, v. 2.0. If a copy of the MPL was not distributed with this
4 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 :
6 : #include "DisplayItemScrollClip.h"
7 :
8 : #include "DisplayItemClip.h"
9 :
10 : namespace mozilla {
11 :
12 : /* static */ bool
13 0 : DisplayItemScrollClip::IsAncestor(const DisplayItemScrollClip* aAncestor,
14 : const DisplayItemScrollClip* aDescendant)
15 : {
16 0 : if (!aAncestor) {
17 : // null means root.
18 0 : return true;
19 : }
20 :
21 0 : for (const DisplayItemScrollClip* sc = aDescendant; sc; sc = sc->mParent) {
22 0 : if (sc == aAncestor) {
23 0 : return true;
24 : }
25 : }
26 :
27 0 : return false;
28 : }
29 :
30 : bool
31 0 : DisplayItemScrollClip::HasRoundedCorners() const
32 : {
33 0 : for (const DisplayItemScrollClip* scrollClip = this;
34 0 : scrollClip; scrollClip = scrollClip->mParent) {
35 0 : if (scrollClip->mClip->GetRoundedRectCount() > 0) {
36 0 : return true;
37 : }
38 : }
39 0 : return false;
40 : }
41 :
42 : /* static */ nsCString
43 0 : DisplayItemScrollClip::ToString(const DisplayItemScrollClip* aScrollClip)
44 : {
45 0 : nsAutoCString str;
46 0 : for (const DisplayItemScrollClip* scrollClip = aScrollClip;
47 0 : scrollClip; scrollClip = scrollClip->mParent) {
48 0 : str.AppendPrintf("<%s>%s", scrollClip->mClip ? scrollClip->mClip->ToString().get() : "null",
49 0 : scrollClip->mIsAsyncScrollable ? " [async-scrollable]" : "");
50 0 : if (scrollClip->mParent) {
51 0 : str.Append(", ");
52 : }
53 : }
54 0 : return str;
55 : }
56 :
57 : } // namespace mozilla
|