2 * Copyright (c) 2007-2010 SlimDX Group
\r
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
\r
5 * of this software and associated documentation files (the "Software"), to deal
\r
6 * in the Software without restriction, including without limitation the rights
\r
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
\r
8 * copies of the Software, and to permit persons to whom the Software is
\r
9 * furnished to do so, subject to the following conditions:
\r
11 * The above copyright notice and this permission notice shall be included in
\r
12 * all copies or substantial portions of the Software.
\r
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
\r
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
\r
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
\r
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
\r
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
\r
25 #include <d2d1helper.h>
\r
27 #include "Direct2DException.h"
\r
29 #include "StrokeStyle.h"
\r
31 const IID IID_ID2D1StrokeStyle = __uuidof(ID2D1StrokeStyle);
\r
33 using namespace System;
\r
39 StrokeStyle::StrokeStyle( SlimDX::Direct2D::Factory^ factory )
\r
41 ID2D1StrokeStyle *strokeStyle = NULL;
\r
43 HRESULT hr = factory->InternalPointer->CreateStrokeStyle( D2D1::StrokeStyleProperties(), NULL, 0, &strokeStyle );
\r
45 if( RECORD_D2D( hr ).IsFailure )
\r
46 throw gcnew Direct2DException( Result::Last );
\r
48 Construct( strokeStyle );
\r
51 StrokeStyle::StrokeStyle( SlimDX::Direct2D::Factory^ factory, StrokeStyleProperties properties )
\r
53 ID2D1StrokeStyle *strokeStyle = NULL;
\r
55 HRESULT hr = factory->InternalPointer->CreateStrokeStyle( reinterpret_cast<D2D1_STROKE_STYLE_PROPERTIES*>( &properties ),
\r
56 NULL, 0, &strokeStyle );
\r
58 if( RECORD_D2D( hr ).IsFailure )
\r
59 throw gcnew Direct2DException( Result::Last );
\r
61 Construct( strokeStyle );
\r
64 StrokeStyle::StrokeStyle( SlimDX::Direct2D::Factory^ factory, StrokeStyleProperties properties, array<float>^ dashes )
\r
66 ID2D1StrokeStyle *strokeStyle = NULL;
\r
67 pin_ptr<float> pinnedDashes = &dashes[0];
\r
69 HRESULT hr = factory->InternalPointer->CreateStrokeStyle( reinterpret_cast<D2D1_STROKE_STYLE_PROPERTIES*>( &properties ),
\r
70 pinnedDashes, dashes->Length, &strokeStyle );
\r
72 if( RECORD_D2D( hr ).IsFailure )
\r
73 throw gcnew Direct2DException( Result::Last );
\r
75 Construct( strokeStyle );
\r
78 array<float>^ StrokeStyle::GetDashes()
\r
80 array<float>^ results = gcnew array<float>( InternalPointer->GetDashesCount() );
\r
81 pin_ptr<float> pinnedResults = &results[0];
\r
83 InternalPointer->GetDashes( pinnedResults, InternalPointer->GetDashesCount() );
\r
88 CapStyle StrokeStyle::StartCap::get()
\r
90 return static_cast<CapStyle>( InternalPointer->GetStartCap() );
\r
93 CapStyle StrokeStyle::EndCap::get()
\r
95 return static_cast<CapStyle>( InternalPointer->GetEndCap() );
\r
98 CapStyle StrokeStyle::DashCap::get()
\r
100 return static_cast<CapStyle>( InternalPointer->GetDashCap() );
\r
103 SlimDX::Direct2D::LineJoin StrokeStyle::LineJoin::get()
\r
105 return static_cast<SlimDX::Direct2D::LineJoin>( InternalPointer->GetLineJoin() );
\r
108 float StrokeStyle::MiterLimit::get()
\r
110 return InternalPointer->GetMiterLimit();
\r
113 SlimDX::Direct2D::DashStyle StrokeStyle::DashStyle::get()
\r
115 return static_cast<SlimDX::Direct2D::DashStyle>( InternalPointer->GetDashStyle() );
\r
118 float StrokeStyle::DashOffset::get()
\r
120 return InternalPointer->GetDashOffset();
\r