Home | History | Annotate | Download | only in haiku
      1 /*
      2  * Copyright (C) 2007 Ryan Leavengood <leavengood (at) gmail.com>
      3  *
      4  * All rights reserved.
      5  *
      6  * Redistribution and use in source and binary forms, with or without
      7  * modification, are permitted provided that the following conditions
      8  * are met:
      9  * 1. Redistributions of source code must retain the above copyright
     10  *    notice, this list of conditions and the following disclaimer.
     11  * 2. Redistributions in binary form must reproduce the above copyright
     12  *    notice, this list of conditions and the following disclaimer in the
     13  *    documentation and/or other materials provided with the distribution.
     14  *
     15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26  */
     27 
     28 #include "config.h"
     29 #include "Path.h"
     30 
     31 #include "AffineTransform.h"
     32 #include "FloatRect.h"
     33 #include "NotImplemented.h"
     34 #include "PlatformString.h"
     35 #include <Region.h>
     36 
     37 
     38 namespace WebCore {
     39 
     40 Path::Path()
     41     : m_path(new BRegion())
     42 {
     43 }
     44 
     45 Path::~Path()
     46 {
     47     delete m_path;
     48 }
     49 
     50 Path::Path(const Path& other)
     51     : m_path(new BRegion(*other.platformPath()))
     52 {
     53 }
     54 
     55 Path& Path::operator=(const Path& other)
     56 {
     57     if (&other != this)
     58         m_path = other.platformPath();
     59 
     60     return *this;
     61 }
     62 
     63 bool Path::hasCurrentPoint() const
     64 {
     65     return !isEmpty();
     66 }
     67 
     68 bool Path::contains(const FloatPoint& point, WindRule rule) const
     69 {
     70     return m_path->Contains(point);
     71 }
     72 
     73 void Path::translate(const FloatSize& size)
     74 {
     75     notImplemented();
     76 }
     77 
     78 FloatRect Path::boundingRect() const
     79 {
     80     return m_path->Frame();
     81 }
     82 
     83 void Path::moveTo(const FloatPoint& point)
     84 {
     85     // FIXME: Use OffsetBy?
     86     notImplemented();
     87 }
     88 
     89 void Path::addLineTo(const FloatPoint& p)
     90 {
     91     notImplemented();
     92 }
     93 
     94 void Path::addQuadCurveTo(const FloatPoint& cp, const FloatPoint& p)
     95 {
     96     notImplemented();
     97 }
     98 
     99 void Path::addBezierCurveTo(const FloatPoint& cp1, const FloatPoint& cp2, const FloatPoint& p)
    100 {
    101     notImplemented();
    102 }
    103 
    104 void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius)
    105 {
    106     notImplemented();
    107 }
    108 
    109 void Path::closeSubpath()
    110 {
    111     notImplemented();
    112 }
    113 
    114 void Path::addArc(const FloatPoint& p, float r, float sar, float ear, bool anticlockwise)
    115 {
    116     notImplemented();
    117 }
    118 
    119 void Path::addRect(const FloatRect& r)
    120 {
    121     m_path->Include(r);
    122 }
    123 
    124 void Path::addEllipse(const FloatRect& r)
    125 {
    126     notImplemented();
    127 }
    128 
    129 void Path::clear()
    130 {
    131     m_path->MakeEmpty();
    132 }
    133 
    134 bool Path::isEmpty() const
    135 {
    136     return !m_path->Frame().IsValid();
    137 }
    138 
    139 String Path::debugString() const
    140 {
    141     notImplemented();
    142     return String();
    143 }
    144 
    145 void Path::apply(void* info, PathApplierFunction function) const
    146 {
    147     notImplemented();
    148 }
    149 
    150 void Path::transform(const AffineTransform& transform)
    151 {
    152     notImplemented();
    153 }
    154 
    155 FloatRect Path::strokeBoundingRect(StrokeStyleApplier* applier)
    156 {
    157     notImplemented();
    158     return FloatRect();
    159 }
    160 
    161 } // namespace WebCore
    162 
    163