| Index: Source/core/rendering/TextAutosizer.h
|
| diff --git a/Source/core/rendering/TextAutosizer.h b/Source/core/rendering/TextAutosizer.h
|
| deleted file mode 100644
|
| index 5f7ff37fe654e5cc99a3c6b9996829134ba8c97d..0000000000000000000000000000000000000000
|
| --- a/Source/core/rendering/TextAutosizer.h
|
| +++ /dev/null
|
| @@ -1,150 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2012 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - *
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
| - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
| - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
| - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
| - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#ifndef TextAutosizer_h
|
| -#define TextAutosizer_h
|
| -
|
| -#include "core/HTMLNames.h"
|
| -#include "platform/heap/Handle.h"
|
| -#include "platform/text/WritingMode.h"
|
| -#include "wtf/HashMap.h"
|
| -#include "wtf/Noncopyable.h"
|
| -#include "wtf/OwnPtr.h"
|
| -#include "wtf/PassOwnPtr.h"
|
| -
|
| -namespace blink {
|
| -
|
| -class Document;
|
| -class RenderBlock;
|
| -class RenderObject;
|
| -struct TextAutosizingWindowInfo;
|
| -
|
| -// Represents cluster related data. Instances should not persist between calls to processSubtree.
|
| -struct TextAutosizingClusterInfo {
|
| - explicit TextAutosizingClusterInfo(RenderBlock* root)
|
| - : root(root)
|
| - , blockContainingAllText(0)
|
| - , maxAllowedDifferenceFromTextWidth(150)
|
| - {
|
| - }
|
| -
|
| - RenderBlock* root;
|
| - const RenderBlock* blockContainingAllText;
|
| -
|
| - // Upper limit on the difference between the width of the cluster's block containing all
|
| - // text and that of a narrow child before the child becomes a separate cluster.
|
| - float maxAllowedDifferenceFromTextWidth;
|
| -
|
| - // Descendants of the cluster that are narrower than the block containing all text and must be
|
| - // processed together.
|
| - Vector<TextAutosizingClusterInfo> narrowDescendants;
|
| -};
|
| -
|
| -class TextAutosizer FINAL : public NoBaseWillBeGarbageCollectedFinalized<TextAutosizer> {
|
| - WTF_MAKE_NONCOPYABLE(TextAutosizer);
|
| -public:
|
| - static PassOwnPtrWillBeRawPtr<TextAutosizer> create(Document* document)
|
| - {
|
| - return adoptPtrWillBeNoop(new TextAutosizer(document));
|
| - }
|
| -
|
| - bool processSubtree(RenderObject* layoutRoot);
|
| - void recalculateMultipliers();
|
| -
|
| - void trace(Visitor*);
|
| -
|
| -private:
|
| - friend class FastTextAutosizer;
|
| -
|
| - enum TraversalDirection {
|
| - FirstToLast,
|
| - LastToFirst
|
| - };
|
| -
|
| - explicit TextAutosizer(Document*);
|
| -
|
| - bool isApplicable() const;
|
| - float clusterMultiplier(WritingMode, const TextAutosizingWindowInfo&, float textWidth) const;
|
| -
|
| - void processClusterInternal(TextAutosizingClusterInfo&, RenderBlock* container, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&, float multiplier);
|
| - void processCluster(TextAutosizingClusterInfo&, RenderBlock* container, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&);
|
| - void processCompositeCluster(Vector<TextAutosizingClusterInfo>&, const TextAutosizingWindowInfo&);
|
| - void processContainer(float multiplier, RenderBlock* container, TextAutosizingClusterInfo&, RenderObject* subtreeRoot, const TextAutosizingWindowInfo&);
|
| -
|
| - void setMultiplier(RenderObject*, float);
|
| - void setMultiplierForList(RenderObject* renderer, float multiplier);
|
| -
|
| - unsigned getCachedHash(const RenderObject* renderer, bool putInCacheIfAbsent);
|
| -
|
| - static bool isAutosizingContainer(const RenderObject*);
|
| - static bool isNarrowDescendant(const RenderBlock*, TextAutosizingClusterInfo& parentClusterInfo);
|
| - static bool isWiderDescendant(const RenderBlock*, const TextAutosizingClusterInfo& parentClusterInfo);
|
| - static bool isIndependentDescendant(const RenderBlock*);
|
| - static bool isAutosizingCluster(const RenderBlock*, TextAutosizingClusterInfo& parentClusterInfo);
|
| -
|
| - static bool containerShouldBeAutosized(const RenderBlock* container);
|
| - static bool containerContainsOneOfTags(const RenderBlock* cluster, const Vector<QualifiedName>& tags);
|
| - static bool containerIsRowOfLinks(const RenderObject* container);
|
| - static bool contentHeightIsConstrained(const RenderBlock* container);
|
| - static bool compositeClusterShouldBeAutosized(Vector<TextAutosizingClusterInfo>&, float blockWidth);
|
| - static void measureDescendantTextWidth(const RenderBlock* container, TextAutosizingClusterInfo&, float minTextWidth, float& textWidth);
|
| - unsigned computeCompositeClusterHash(Vector<TextAutosizingClusterInfo>&);
|
| - float computeMultiplier(Vector<TextAutosizingClusterInfo>&, const TextAutosizingWindowInfo&, float textWidth);
|
| -
|
| - // Use to traverse the tree of descendants, excluding descendants of containers (but returning the containers themselves).
|
| - static RenderObject* nextInPreOrderSkippingDescendantsOfContainers(const RenderObject*, const RenderObject* stayWithin);
|
| -
|
| - static const RenderBlock* findDeepestBlockContainingAllText(const RenderBlock* cluster);
|
| -
|
| - // Depending on the traversal direction specified, finds the first or the last leaf text node child that doesn't
|
| - // belong to any cluster.
|
| - static const RenderObject* findFirstTextLeafNotInCluster(const RenderObject*, size_t& depth, TraversalDirection);
|
| -
|
| - // Returns groups of narrow descendants of a given autosizing cluster. The groups are combined
|
| - // by the difference between the width of the descendant and the width of the parent cluster's
|
| - // |blockContainingAllText|.
|
| - static void getNarrowDescendantsGroupedByWidth(const TextAutosizingClusterInfo& parentClusterInfo, Vector<Vector<TextAutosizingClusterInfo> >&);
|
| -
|
| - void addNonAutosizedCluster(unsigned key, TextAutosizingClusterInfo& value);
|
| - void secondPassProcessStaleNonAutosizedClusters();
|
| - void processStaleContainer(float multiplier, RenderBlock* cluster, TextAutosizingClusterInfo&);
|
| -
|
| - RawPtrWillBeMember<Document> m_document;
|
| -
|
| - HashMap<const RenderObject*, unsigned> m_hashCache;
|
| -
|
| - // Mapping from all autosized (i.e. multiplier > 1) cluster hashes to their respective multipliers.
|
| - HashMap<unsigned, float> m_hashToMultiplier;
|
| - Vector<unsigned> m_hashesToAutosizeSecondPass;
|
| -
|
| - // Mapping from a cluster hash to the corresponding cluster infos which have not been autosized yet.
|
| - HashMap<unsigned, OwnPtr<Vector<TextAutosizingClusterInfo> > > m_nonAutosizedClusters;
|
| -
|
| - bool m_previouslyAutosized;
|
| -};
|
| -
|
| -} // namespace blink
|
| -
|
| -#endif // TextAutosizer_h
|
|
|