[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198

andersca at apple.com andersca at apple.com
Sun Feb 20 22:49:45 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 4effb59705aee4cb0998bb3aba9d820eca2e3db3
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Jan 11 23:40:26 2011 +0000

    2011-01-11  Anders Carlsson  <andersca at apple.com>
    
            Reviewed by Sam Weinig.
    
            Add a Region class which represents a graphical region
            https://bugs.webkit.org/show_bug.cgi?id=52255
    
            * Platform/Region.cpp: Added.
            (WebKit::Region::Region):
            (WebKit::Region::rects):
            (WebKit::Region::Shape::Shape):
            (WebKit::Region::Shape::appendSpan):
            (WebKit::Region::Shape::canCoalesce):
            (WebKit::Region::Shape::appendSpans):
            (WebKit::Region::Shape::appendSegment):
            (WebKit::Region::Shape::spans_begin):
            (WebKit::Region::Shape::spans_end):
            (WebKit::Region::Shape::segments_begin):
            (WebKit::Region::Shape::segments_end):
            (WebKit::Region::Shape::dump):
            (WebKit::Region::Shape::bounds):
            (WebKit::Region::Shape::move):
            (WebKit::Region::Shape::swap):
            (WebKit::Region::Shape::shapeOperation):
            (WebKit::Region::Shape::UnionOperation::trySimpleOperation):
            (WebKit::Region::Shape::unionShapes):
            (WebKit::Region::Shape::IntersectOperation::trySimpleOperation):
            (WebKit::Region::Shape::intersectShapes):
            (WebKit::Region::Shape::SubtractOperation::trySimpleOperation):
            (WebKit::Region::Shape::subtractShapes):
            (WebKit::Region::dump):
            (WebKit::Region::intersect):
            (WebKit::Region::unite):
            (WebKit::Region::subtract):
            (WebKit::Region::move):
            * Platform/Region.h: Added.
            (WebKit::Region::bounds):
            (WebKit::Region::isEmpty):
            (WebKit::Region::Span::Span):
            (WebKit::Region::Shape::isEmpty):
            * WebKit2.xcodeproj/project.pbxproj:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75562 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index b7c17ad..7958eaf 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,47 @@
 2011-01-11  Anders Carlsson  <andersca at apple.com>
 
+        Reviewed by Sam Weinig.
+
+        Add a Region class which represents a graphical region
+        https://bugs.webkit.org/show_bug.cgi?id=52255
+
+        * Platform/Region.cpp: Added.
+        (WebKit::Region::Region):
+        (WebKit::Region::rects):
+        (WebKit::Region::Shape::Shape):
+        (WebKit::Region::Shape::appendSpan):
+        (WebKit::Region::Shape::canCoalesce):
+        (WebKit::Region::Shape::appendSpans):
+        (WebKit::Region::Shape::appendSegment):
+        (WebKit::Region::Shape::spans_begin):
+        (WebKit::Region::Shape::spans_end):
+        (WebKit::Region::Shape::segments_begin):
+        (WebKit::Region::Shape::segments_end):
+        (WebKit::Region::Shape::dump):
+        (WebKit::Region::Shape::bounds):
+        (WebKit::Region::Shape::move):
+        (WebKit::Region::Shape::swap):
+        (WebKit::Region::Shape::shapeOperation):
+        (WebKit::Region::Shape::UnionOperation::trySimpleOperation):
+        (WebKit::Region::Shape::unionShapes):
+        (WebKit::Region::Shape::IntersectOperation::trySimpleOperation):
+        (WebKit::Region::Shape::intersectShapes):
+        (WebKit::Region::Shape::SubtractOperation::trySimpleOperation):
+        (WebKit::Region::Shape::subtractShapes):
+        (WebKit::Region::dump):
+        (WebKit::Region::intersect):
+        (WebKit::Region::unite):
+        (WebKit::Region::subtract):
+        (WebKit::Region::move):
+        * Platform/Region.h: Added.
+        (WebKit::Region::bounds):
+        (WebKit::Region::isEmpty):
+        (WebKit::Region::Span::Span):
+        (WebKit::Region::Shape::isEmpty):
+        * WebKit2.xcodeproj/project.pbxproj:
+
+2011-01-11  Anders Carlsson  <andersca at apple.com>
+
         Reviewed by Darin Adler.
 
         Add DidSetSize message
diff --git a/WebKit2/Platform/Region.cpp b/WebKit2/Platform/Region.cpp
new file mode 100644
index 0000000..c82ccad
--- /dev/null
+++ b/WebKit2/Platform/Region.cpp
@@ -0,0 +1,451 @@
+/*
+ * Copyright (C) 2010, 2011 Apple 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 INC. 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 INC. 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.
+ */
+
+#include "Region.h"
+
+// A region class based on the paper "Scanline Coherent Shape Algebra"
+// by Jonathan E. Steinhart from the book "Graphics Gems II".
+//
+// This implementation uses two vectors instead of linked list, and
+// also compresses regions when possible.
+
+using namespace WebCore;
+
+namespace WebKit {
+
+Region::Region()
+{
+}
+
+Region::Region(const IntRect& rect)
+    : m_bounds(rect)
+    , m_shape(rect)
+{
+}
+
+Vector<IntRect> Region::rects() const
+{
+    Vector<IntRect> rects;
+
+    for (Shape::SpanIterator span = m_shape.spans_begin(), end = m_shape.spans_end(); span != end && span + 1 != end; ++span) {
+        int y = span->y;
+        int height = (span + 1)->y - y;
+
+        for (Shape::SegmentIterator segment = m_shape.segments_begin(span), end = m_shape.segments_end(span); segment != end && segment + 1 != end; segment += 2) {
+            int x = *segment;
+            int width = *(segment + 1) - x;
+
+            rects.append(IntRect(x, y, width, height));
+        }
+    }
+
+    return rects;
+}
+
+Region::Shape::Shape()
+{
+}
+
+Region::Shape::Shape(const IntRect& rect)
+{
+    appendSpan(rect.y());
+    appendSegment(rect.x());
+    appendSegment(rect.right());
+    appendSpan(rect.bottom());
+}
+
+void Region::Shape::appendSpan(int y)
+{
+    m_spans.append(Span(y, m_segments.size()));
+}
+
+bool Region::Shape::canCoalesce(SegmentIterator begin, SegmentIterator end)
+{
+    if (m_spans.isEmpty())
+        return false;
+
+    SegmentIterator lastSpanBegin = m_segments.data() + m_spans.last().segmentIndex;
+    SegmentIterator lastSpanEnd = m_segments.data() + m_segments.size();
+
+    // Check if both spans have an equal number of segments.
+    if (lastSpanEnd - lastSpanBegin != end - begin)
+        return false;
+
+    // Check if both spans are equal.
+    if (!std::equal(begin, end, lastSpanBegin))
+        return false;
+
+    // Since the segments are equal the second segment can just be ignored.
+    return true;
+}
+
+void Region::Shape::appendSpan(int y, SegmentIterator begin, SegmentIterator end)
+{
+    if (canCoalesce(begin, end))
+        return;
+  
+    appendSpan(y);
+    m_segments.appendRange(begin, end);
+}
+
+void Region::Shape::appendSpans(const Shape& shape, SpanIterator begin, SpanIterator end)
+{
+    for (SpanIterator it = begin; it != end; ++it)
+        appendSpan(it->y, shape.segments_begin(it), shape.segments_end(it));
+}
+
+void Region::Shape::appendSegment(int x)
+{
+    m_segments.append(x);
+}
+
+Region::Shape::SpanIterator Region::Shape::spans_begin() const
+{
+    return m_spans.data();
+}
+
+Region::Shape::SpanIterator Region::Shape::spans_end() const
+{
+    return m_spans.data() + m_spans.size();
+}
+
+Region::Shape::SegmentIterator Region::Shape::segments_begin(SpanIterator it) const
+{
+    ASSERT(it >= m_spans.data());
+    ASSERT(it < m_spans.data() + m_spans.size());
+
+    // Check if this span has any segments.
+    if (it->segmentIndex == m_segments.size())
+        return 0;
+
+    return &m_segments[it->segmentIndex];
+}
+
+Region::Shape::SegmentIterator Region::Shape::segments_end(SpanIterator it) const
+{
+    ASSERT(it >= m_spans.data());
+    ASSERT(it < m_spans.data() + m_spans.size());
+
+    // Check if this span has any segments.
+    if (it->segmentIndex == m_segments.size())
+        return 0;
+
+    ASSERT(it + 1 < m_spans.data() + m_spans.size());
+    return &m_segments[(it + 1)->segmentIndex];
+}
+
+#ifndef NDEBUG
+void Region::Shape::dump() const
+{
+    for (Shape::SpanIterator span = spans_begin(), end = spans_end(); span != end; ++span) {
+        printf("%6d: (", span->y);
+
+        for (Shape::SegmentIterator segment = segments_begin(span), end = segments_end(span); segment != end; ++segment)
+            printf("%d ", *segment);
+        printf(")\n");
+    }
+
+    printf("\n");
+}
+#endif
+
+IntRect Region::Shape::bounds() const
+{
+    if (isEmpty())
+        return IntRect();
+
+    SpanIterator span = spans_begin();
+    int minY = span->y;
+
+    SpanIterator lastSpan = spans_end() - 1;
+    int maxY = lastSpan->y;
+
+    int minX = std::numeric_limits<int>::max();
+    int maxX = std::numeric_limits<int>::min();
+
+    while (span != lastSpan) {
+        SegmentIterator firstSegment = segments_begin(span);
+        SegmentIterator lastSegment = segments_end(span) - 1;
+
+        if (firstSegment && lastSegment) {
+            ASSERT(firstSegment != lastSegment);
+
+            if (*firstSegment < minX)
+                minX = *firstSegment;
+
+            if (*lastSegment > maxX)
+                maxX = *lastSegment;
+        }
+
+        ++span;
+    }
+
+    ASSERT(minX <= maxX);
+    ASSERT(minY <= maxY);
+
+    return IntRect(minX, minY, maxX - minX, maxY - minY);
+}
+
+void Region::Shape::move(int x, int y)
+{
+    for (size_t i = 0; i < m_segments.size(); ++i)
+        m_segments[i] += x;
+    for (size_t i = 0; i < m_spans.size(); ++i)
+        m_spans[i].y += y;
+}
+
+void Region::Shape::swap(Shape& other)
+{
+    m_segments.swap(other.m_segments);
+    m_spans.swap(other.m_spans);
+}
+
+enum {
+    Shape1,
+    Shape2,
+};
+
+template<typename Operation>
+Region::Shape Region::Shape::shapeOperation(const Shape& shape1, const Shape& shape2)
+{
+    COMPILE_ASSERT(!(!Operation::shouldAddRemainingSegmentsFromSpan1 && Operation::shouldAddRemainingSegmentsFromSpan2), invalid_segment_combination);
+    COMPILE_ASSERT(!(!Operation::shouldAddRemainingSpansFromShape1 && Operation::shouldAddRemainingSpansFromShape2), invalid_span_combination);
+
+    Shape result;
+    if (Operation::trySimpleOperation(shape1, shape2, result))
+        return result;
+
+    SpanIterator spans1 = shape1.spans_begin();
+    SpanIterator spans1End = shape1.spans_end();
+
+    SpanIterator spans2 = shape2.spans_begin();
+    SpanIterator spans2End = shape2.spans_end();
+
+    SegmentIterator segments1 = 0;
+    SegmentIterator segments1End = 0;
+
+    SegmentIterator segments2 = 0;
+    SegmentIterator segments2End = 0;
+
+    // Iterate over all spans.
+    while (spans1 != spans1End && spans2 != spans2End) {
+        int y;
+        int test = spans1->y - spans2->y;
+
+        if (test <= 0) {
+            y = spans1->y;
+
+            segments1 = shape1.segments_begin(spans1);
+            segments1End = shape1.segments_end(spans1);
+            ++spans1;
+        }
+        if (test >= 0) {
+            y = spans2->y;
+
+            segments2 = shape2.segments_begin(spans2);
+            segments2End = shape2.segments_end(spans2);
+            ++spans2;
+        }
+
+        int flag = 0;
+        int oldFlag = 0;
+
+        SegmentIterator s1 = segments1;
+        SegmentIterator s2 = segments2;
+
+        Vector<int> segments;
+
+        // Now iterate over the segments in each span and construct a new vector of segments.
+        while (s1 != segments1End && s2 != segments2End) {
+            int test = *s1 - *s2;
+            int x;
+
+            if (test <= 0) {
+                x = *s1;
+                flag = flag ^ 1;
+                ++s1;
+            }
+            if (test >= 0) {
+                x = *s2;
+                flag = flag ^ 2;
+                ++s2;
+            }
+
+            if (flag == Operation::opCode || oldFlag == Operation::opCode)
+                segments.append(x);
+            
+            oldFlag = flag;
+        }
+
+        // Add any remaining segments.
+        if (Operation::shouldAddRemainingSegmentsFromSpan1 && s1 != segments1End)
+            segments.appendRange(s1, segments1End);
+        else if (Operation::shouldAddRemainingSegmentsFromSpan2 && s2 != segments2End)
+            segments.appendRange(s2, segments2End);
+
+        // Add the span.
+        if (!segments.isEmpty() || !result.isEmpty())
+            result.appendSpan(y, segments.data(), segments.data() + segments.size());
+    }
+
+    // Add any remaining spans.
+    if (Operation::shouldAddRemainingSpansFromShape1 && spans1 != spans1End)
+        result.appendSpans(shape1, spans1, spans1End);
+    else if (Operation::shouldAddRemainingSpansFromShape2 && spans2 != spans2End)
+        result.appendSpans(shape2, spans2, spans2End);
+
+    return result;
+}
+
+struct Region::Shape::UnionOperation {
+    static bool trySimpleOperation(const Shape& shape1, const Shape& shape2, Shape& result)
+    {
+        if (shape1.isEmpty()) {
+            result = shape2;
+            return true;
+        }
+        
+        if (shape2.isEmpty()) {
+            result = shape1;
+            return true;
+        }
+
+        return false;
+    }
+
+    static const int opCode = 0;
+
+    static const bool shouldAddRemainingSegmentsFromSpan1 = true;
+    static const bool shouldAddRemainingSegmentsFromSpan2 = true;
+    static const bool shouldAddRemainingSpansFromShape1 = true;
+    static const bool shouldAddRemainingSpansFromShape2 = true;
+};
+
+Region::Shape Region::Shape::unionShapes(const Shape& shape1, const Shape& shape2)
+{
+    return shapeOperation<UnionOperation>(shape1, shape2);
+}
+
+struct Region::Shape::IntersectOperation {
+    static bool trySimpleOperation(const Shape& shape1, const Shape& shape2, Shape& result)
+    {
+        if (shape1.isEmpty()) {
+            result = Shape();
+            return true;
+        }
+
+        if (shape2.isEmpty()) {
+            result = shape1;
+            return true;
+        }
+        
+        return false;
+    }
+    
+    static const int opCode = 3;
+    
+    static const bool shouldAddRemainingSegmentsFromSpan1 = false;
+    static const bool shouldAddRemainingSegmentsFromSpan2 = false;
+    static const bool shouldAddRemainingSpansFromShape1 = false;
+    static const bool shouldAddRemainingSpansFromShape2 = false;
+};
+
+Region::Shape Region::Shape::intersectShapes(const Shape& shape1, const Shape& shape2)
+{
+    return shapeOperation<IntersectOperation>(shape1, shape2);
+}
+
+struct Region::Shape::SubtractOperation {
+    static bool trySimpleOperation(const Shape& shape1, const Shape& shape2, Region::Shape& result)
+    {
+        
+        if (shape1.isEmpty() || shape2.isEmpty()) {
+            result = Shape();
+            return true;
+        }
+        
+        return false;
+    }
+    
+    static const int opCode = 1;
+    
+    static const bool shouldAddRemainingSegmentsFromSpan1 = true;
+    static const bool shouldAddRemainingSegmentsFromSpan2 = false;
+    static const bool shouldAddRemainingSpansFromShape1 = true;
+    static const bool shouldAddRemainingSpansFromShape2 = false;
+};
+
+Region::Shape Region::Shape::subtractShapes(const Shape& shape1, const Shape& shape2)
+{
+    return shapeOperation<SubtractOperation>(shape1, shape2);
+}
+
+#ifndef NDEBUG
+void Region::dump() const
+{
+    printf("Bounds: (%d, %d, %d, %d)\n",
+           m_bounds.x(), m_bounds.y(), m_bounds.width(), m_bounds.height());
+    m_shape.dump();
+}
+#endif
+
+void Region::intersect(const Region& region)
+{
+    if (!m_bounds.intersects(region.m_bounds)) {
+        m_shape = Shape();
+        m_bounds = IntRect();
+        return;
+    }
+
+    Shape intersectedShape = Shape::intersectShapes(m_shape, region.m_shape);
+
+    m_shape.swap(intersectedShape);
+    m_bounds = m_shape.bounds();
+}
+
+void Region::unite(const Region& region)
+{
+    Shape unitedShape = Shape::unionShapes(m_shape, region.m_shape);
+
+    m_shape.swap(unitedShape);
+    m_bounds.unite(region.m_bounds);
+}
+
+void Region::subtract(const Region& region)
+{
+    Shape subtractedShape = Shape::subtractShapes(m_shape, region.m_shape);
+
+    m_shape.swap(subtractedShape);
+    m_bounds = m_shape.bounds();
+}
+
+void Region::move(int x, int y)
+{
+    m_bounds.move(x, y);
+    m_shape.move(x, y);
+}
+
+} // namespace WebKit
+
diff --git a/WebKit2/Platform/Region.h b/WebKit2/Platform/Region.h
new file mode 100644
index 0000000..6179215
--- /dev/null
+++ b/WebKit2/Platform/Region.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2010, 2011 Apple 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 INC. 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 INC. 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 Region_h
+#define Region_h
+
+#include <WebCore/IntRect.h>
+#include <wtf/Vector.h>
+
+#include <vector>
+
+namespace WebKit {
+
+class Region {
+public:
+    Region();
+    Region(const WebCore::IntRect&);
+
+    WebCore::IntRect bounds() const { return m_bounds; }
+    bool isEmpty() const { return m_bounds.isEmpty(); }
+
+    Vector<WebCore::IntRect> rects() const;
+
+    void unite(const Region&);
+    void intersect(const Region&);
+    void subtract(const Region&);
+
+    void move(int x, int y);
+
+#ifndef NDEBUG
+    void dump() const;
+#endif
+
+private:
+    struct Span {
+        Span(int y, size_t segmentIndex)
+            : y(y), segmentIndex(segmentIndex)
+        {
+        }
+
+        int y;
+        size_t segmentIndex;
+    };
+
+    class Shape {
+    public:
+        Shape();
+        Shape(const WebCore::IntRect&);
+
+        WebCore::IntRect bounds() const;
+        bool isEmpty() const { return m_spans.isEmpty(); }
+
+        typedef const Span* SpanIterator;
+        SpanIterator spans_begin() const;
+        SpanIterator spans_end() const;
+        
+        typedef const int* SegmentIterator;
+        SegmentIterator segments_begin(SpanIterator) const;
+        SegmentIterator segments_end(SpanIterator) const;
+
+        static Shape unionShapes(const Shape& shape1, const Shape& shape2);
+        static Shape intersectShapes(const Shape& shape1, const Shape& shape2);
+        static Shape subtractShapes(const Shape& shape1, const Shape& shape2);
+
+        void move(int x, int y);
+        void swap(Shape&);
+
+#ifndef NDEBUG
+        void dump() const;
+#endif
+
+    private:
+        struct UnionOperation;
+        struct IntersectOperation;
+        struct SubtractOperation;
+        
+        template<typename Operation>
+        static Shape shapeOperation(const Shape& shape1, const Shape& shape2);
+
+        void appendSegment(int x);
+        void appendSpan(int y);
+        void appendSpan(int y, SegmentIterator begin, SegmentIterator end);
+        void appendSpans(const Shape&, SpanIterator begin, SpanIterator end);
+
+        bool canCoalesce(SegmentIterator begin, SegmentIterator end);
+
+        // FIXME: These vectors should have inline sizes. Figure out a good optimal value.
+        Vector<int> m_segments;
+        Vector<Span> m_spans;        
+    };
+
+    WebCore::IntRect m_bounds;
+    Shape m_shape;
+};
+
+} // namespace WebKit
+
+#endif // Region_h
diff --git a/WebKit2/WebKit2.xcodeproj/project.pbxproj b/WebKit2/WebKit2.xcodeproj/project.pbxproj
index d18e39f..3fe617a 100644
--- a/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -133,6 +133,8 @@
 		1A64229A12DD029200CAAE2C /* DrawingAreaMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64229812DD029200CAAE2C /* DrawingAreaMessages.h */; };
 		1A64230812DD09EB00CAAE2C /* DrawingAreaProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A64230612DD09EB00CAAE2C /* DrawingAreaProxyMessageReceiver.cpp */; };
 		1A64230912DD09EB00CAAE2C /* DrawingAreaProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64230712DD09EB00CAAE2C /* DrawingAreaProxyMessages.h */; };
+		1A64235212DD187C00CAAE2C /* Region.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A64235012DD187C00CAAE2C /* Region.cpp */; };
+		1A64235312DD187C00CAAE2C /* Region.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64235112DD187C00CAAE2C /* Region.h */; };
 		1A6F9F9011E13EFC00DB1371 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */; };
 		1A6F9FB711E1408500DB1371 /* CommandLineMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */; };
 		1A6FA01E11E1526300DB1371 /* WebProcessMainMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A6FA01D11E1526300DB1371 /* WebProcessMainMac.mm */; };
@@ -847,6 +849,8 @@
 		1A6422FC12DD08FE00CAAE2C /* DrawingAreaProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DrawingAreaProxy.messages.in; sourceTree = "<group>"; };
 		1A64230612DD09EB00CAAE2C /* DrawingAreaProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DrawingAreaProxyMessageReceiver.cpp; path = /Users/andersca/Build/Debug/DerivedSources/WebKit2/DrawingAreaProxyMessageReceiver.cpp; sourceTree = "<absolute>"; };
 		1A64230712DD09EB00CAAE2C /* DrawingAreaProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DrawingAreaProxyMessages.h; path = /Users/andersca/Build/Debug/DerivedSources/WebKit2/DrawingAreaProxyMessages.h; sourceTree = "<absolute>"; };
+		1A64235012DD187C00CAAE2C /* Region.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Region.cpp; sourceTree = "<group>"; };
+		1A64235112DD187C00CAAE2C /* Region.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Region.h; sourceTree = "<group>"; };
 		1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CommandLine.h; sourceTree = "<group>"; };
 		1A6F9FB611E1408500DB1371 /* CommandLineMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CommandLineMac.cpp; sourceTree = "<group>"; };
 		1A6FA01D11E1526300DB1371 /* WebProcessMainMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessMainMac.mm; sourceTree = "<group>"; };
@@ -2401,6 +2405,8 @@
 				C0E3AA451209E2BA00A49D01 /* Module.cpp */,
 				C0E3AA441209E2BA00A49D01 /* Module.h */,
 				BC8780FB1161C2B800CC2768 /* PlatformProcessIdentifier.h */,
+				1A64235012DD187C00CAAE2C /* Region.cpp */,
+				1A64235112DD187C00CAAE2C /* Region.h */,
 				BC2E6E771141970C00A63B1E /* RunLoop.cpp */,
 				BC2E6E781141970C00A63B1E /* RunLoop.h */,
 				1A24BED3120894D100FBB059 /* SharedMemory.h */,
@@ -3004,6 +3010,7 @@
 				1A6421F612DCFBAB00CAAE2C /* DrawingAreaImpl.h in Headers */,
 				1A64229A12DD029200CAAE2C /* DrawingAreaMessages.h in Headers */,
 				1A64230912DD09EB00CAAE2C /* DrawingAreaProxyMessages.h in Headers */,
+				1A64235312DD187C00CAAE2C /* Region.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -3456,6 +3463,7 @@
 				1A6421F712DCFBAB00CAAE2C /* DrawingAreaImpl.cpp in Sources */,
 				1A64229912DD029200CAAE2C /* DrawingAreaMessageReceiver.cpp in Sources */,
 				1A64230812DD09EB00CAAE2C /* DrawingAreaProxyMessageReceiver.cpp in Sources */,
+				1A64235212DD187C00CAAE2C /* Region.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list