tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

FlexLineValues.cpp (2498B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "FlexLineValues.h"
      8 
      9 #include "Flex.h"
     10 #include "FlexItemValues.h"
     11 #include "mozilla/dom/FlexBinding.h"
     12 #include "nsFlexContainerFrame.h"
     13 
     14 namespace mozilla::dom {
     15 
     16 NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(FlexLineValues, mParent, mItems)
     17 NS_IMPL_CYCLE_COLLECTING_ADDREF(FlexLineValues)
     18 NS_IMPL_CYCLE_COLLECTING_RELEASE(FlexLineValues)
     19 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(FlexLineValues)
     20  NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
     21  NS_INTERFACE_MAP_ENTRY(nsISupports)
     22 NS_INTERFACE_MAP_END
     23 
     24 FlexLineValues::FlexLineValues(Flex* aParent, const ComputedFlexLineInfo* aLine)
     25    : mParent(aParent) {
     26  MOZ_ASSERT(aLine,
     27             "Should never be instantiated with a null ComputedFlexLineInfo.");
     28 
     29  // Eagerly copy values from aLine, because we're not
     30  // going to keep it around.
     31  mGrowthState = aLine->mGrowthState;
     32 
     33  // Convert all the app unit values into css pixels.
     34  mCrossStart = nsPresContext::AppUnitsToDoubleCSSPixels(aLine->mCrossStart);
     35  mCrossSize = nsPresContext::AppUnitsToDoubleCSSPixels(aLine->mCrossSize);
     36  mFirstBaselineOffset =
     37      nsPresContext::AppUnitsToDoubleCSSPixels(aLine->mFirstBaselineOffset);
     38  mLastBaselineOffset =
     39      nsPresContext::AppUnitsToDoubleCSSPixels(aLine->mLastBaselineOffset);
     40 
     41  mItems.SetLength(aLine->mItems.Length());
     42  uint32_t index = 0;
     43  for (auto&& i : aLine->mItems) {
     44    FlexItemValues* item = new FlexItemValues(this, &i);
     45    mItems.ElementAt(index) = item;
     46    index++;
     47  }
     48 }
     49 
     50 JSObject* FlexLineValues::WrapObject(JSContext* aCx,
     51                                     JS::Handle<JSObject*> aGivenProto) {
     52  return FlexLineValues_Binding::Wrap(aCx, this, aGivenProto);
     53 }
     54 
     55 FlexLineGrowthState FlexLineValues::GrowthState() const { return mGrowthState; }
     56 
     57 double FlexLineValues::CrossStart() const { return mCrossStart; }
     58 
     59 double FlexLineValues::CrossSize() const { return mCrossSize; }
     60 
     61 double FlexLineValues::FirstBaselineOffset() const {
     62  return mFirstBaselineOffset;
     63 }
     64 
     65 double FlexLineValues::LastBaselineOffset() const {
     66  return mLastBaselineOffset;
     67 }
     68 
     69 void FlexLineValues::GetItems(nsTArray<RefPtr<FlexItemValues>>& aResult) {
     70  aResult.AppendElements(mItems);
     71 }
     72 
     73 }  // namespace mozilla::dom