OSDN Git Service

Merge branch 'feature/#36529_SlimDXからSharpDXへの移行' into develop
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / direct2d / RenderTarget.cpp
diff --git a/SlimDXc_Jun2010(VC++2008)/source/direct2d/RenderTarget.cpp b/SlimDXc_Jun2010(VC++2008)/source/direct2d/RenderTarget.cpp
deleted file mode 100644 (file)
index 130879b..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-#include "stdafx.h"\r
-\r
-#include <d2d1.h>\r
-#include <d2d1helper.h>\r
-#include <vcclr.h>\r
-#include <dxgi.h>\r
-\r
-#include "../DataStream.h"\r
-\r
-#include "Direct2DException.h"\r
-\r
-#include "RenderTarget.h"\r
-#include "ConversionMethods.h"\r
-#include "Bitmap.h"\r
-#include "Layer.h"\r
-#include "BitmapRenderTarget.h"\r
-#include "MeshD2D.h"\r
-\r
-const IID IID_ID2D1RenderTarget = __uuidof(ID2D1RenderTarget);\r
-\r
-using namespace System;\r
-using namespace System::Drawing;\r
-\r
-namespace SlimDX\r
-{\r
-namespace Direct2D\r
-{\r
-       RenderTarget^ RenderTarget::FromDXGI( SlimDX::Direct2D::Factory^ factory, SlimDX::DXGI::Surface^ surface, RenderTargetProperties properties )\r
-       {\r
-               ID2D1RenderTarget *target;\r
-\r
-               HRESULT hr = factory->InternalPointer->CreateDxgiSurfaceRenderTarget( surface->InternalPointer, reinterpret_cast<D2D1_RENDER_TARGET_PROPERTIES*>( &properties ), &target );\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return RenderTarget::FromPointer( target );\r
-       }\r
-\r
-       void RenderTarget::BeginDraw()\r
-       {\r
-               InternalPointer->BeginDraw();\r
-       }\r
-\r
-       Result RenderTarget::EndDraw()\r
-       {\r
-               return RECORD_D2D( InternalPointer->EndDraw() );\r
-       }\r
-\r
-       Result RenderTarget::EndDraw( [Out] Int64% tag1, [Out] Int64% tag2 )\r
-       {\r
-               pin_ptr<Int64> pt1 = &tag1;\r
-               pin_ptr<Int64> pt2 = &tag2;\r
-\r
-               HRESULT hr = InternalPointer->EndDraw( reinterpret_cast<D2D1_TAG*>( pt1 ), reinterpret_cast<D2D1_TAG*>( pt2 ) );\r
-               return RECORD_D2D( hr );\r
-       }\r
-\r
-       Result RenderTarget::Flush()\r
-       {\r
-               return RECORD_D2D( InternalPointer->Flush() );\r
-       }\r
-\r
-       Result RenderTarget::Flush( [Out] Int64% tag1, [Out] Int64% tag2 )\r
-       {\r
-               pin_ptr<Int64> pt1 = &tag1;\r
-               pin_ptr<Int64> pt2 = &tag2;\r
-\r
-               HRESULT hr = InternalPointer->Flush( reinterpret_cast<D2D1_TAG*>( pt1 ), reinterpret_cast<D2D1_TAG*>( pt2 ) );\r
-               return RECORD_D2D( hr );\r
-       }\r
-\r
-       void RenderTarget::SetTags( Int64 tag1, Int64 tag2 )\r
-       {\r
-               InternalPointer->SetTags( tag1, tag2 );\r
-       }\r
-\r
-       void RenderTarget::GetTags( [Out] Int64% tag1, [Out] Int64% tag2 )\r
-       {\r
-               pin_ptr<Int64> pt1 = &tag1;\r
-               pin_ptr<Int64> pt2 = &tag2;\r
-\r
-               InternalPointer->GetTags( reinterpret_cast<D2D1_TAG*>( pt1 ), reinterpret_cast<D2D1_TAG*>( pt2 ) );\r
-       }\r
-\r
-       BitmapRenderTarget^ RenderTarget::CreateCompatibleRenderTarget()\r
-       {\r
-               ID2D1BitmapRenderTarget *result = NULL;\r
-\r
-               HRESULT hr = InternalPointer->CreateCompatibleRenderTarget( &result );\r
-\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return BitmapRenderTarget::FromPointer( result );\r
-       }\r
-\r
-       BitmapRenderTarget^ RenderTarget::CreateCompatibleRenderTarget( System::Drawing::SizeF desiredSize )\r
-       {\r
-               ID2D1BitmapRenderTarget *result = NULL;\r
-\r
-               HRESULT hr = InternalPointer->CreateCompatibleRenderTarget( D2D1::SizeF( desiredSize.Width, desiredSize.Height ), &result );\r
-\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return BitmapRenderTarget::FromPointer( result );\r
-       }\r
-\r
-       BitmapRenderTarget^ RenderTarget::CreateCompatibleRenderTarget( System::Drawing::SizeF desiredSize, System::Drawing::Size desiredPixelSize )\r
-       {\r
-               ID2D1BitmapRenderTarget *result = NULL;\r
-\r
-               HRESULT hr = InternalPointer->CreateCompatibleRenderTarget( D2D1::SizeF( desiredSize.Width, desiredSize.Height ), D2D1::SizeU( desiredPixelSize.Width, desiredPixelSize.Height ), &result );\r
-\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return BitmapRenderTarget::FromPointer( result );\r
-       }\r
-\r
-       BitmapRenderTarget^ RenderTarget::CreateCompatibleRenderTarget( System::Drawing::SizeF desiredSize, System::Drawing::Size desiredPixelSize, SlimDX::Direct2D::PixelFormat desiredPixelFormat )\r
-       {\r
-               ID2D1BitmapRenderTarget *result = NULL;\r
-\r
-               HRESULT hr = InternalPointer->CreateCompatibleRenderTarget( D2D1::SizeF( desiredSize.Width, desiredSize.Height ), D2D1::SizeU( desiredPixelSize.Width, desiredPixelSize.Height ),\r
-                       D2D1::PixelFormat( static_cast<DXGI_FORMAT>( desiredPixelFormat.Format ), static_cast<D2D1_ALPHA_MODE>( desiredPixelFormat.AlphaMode ) ), &result );\r
-\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return BitmapRenderTarget::FromPointer( result );\r
-       }\r
-\r
-       BitmapRenderTarget^ RenderTarget::CreateCompatibleRenderTarget( System::Drawing::SizeF desiredSize, System::Drawing::Size desiredPixelSize, SlimDX::Direct2D::PixelFormat desiredPixelFormat, CompatibleRenderTargetOptions options )\r
-       {\r
-               ID2D1BitmapRenderTarget *result = NULL;\r
-\r
-               HRESULT hr = InternalPointer->CreateCompatibleRenderTarget( D2D1::SizeF( desiredSize.Width, desiredSize.Height ), D2D1::SizeU( desiredPixelSize.Width, desiredPixelSize.Height ),\r
-                       D2D1::PixelFormat( static_cast<DXGI_FORMAT>( desiredPixelFormat.Format ), static_cast<D2D1_ALPHA_MODE>( desiredPixelFormat.AlphaMode ) ), \r
-                       static_cast<D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS>( options ), &result );\r
-\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return BitmapRenderTarget::FromPointer( result );\r
-       }\r
-\r
-       void RenderTarget::Clear()\r
-       {\r
-               InternalPointer->Clear( NULL );\r
-       }\r
-\r
-       void RenderTarget::Clear( Color4 color )\r
-       {\r
-               InternalPointer->Clear( reinterpret_cast<D2D1_COLOR_F*>( &color ) );\r
-       }\r
-\r
-       void RenderTarget::DrawLine( Brush^ brush, PointF point1, PointF point2 )\r
-       {\r
-               D2D1_POINT_2F point1_n = D2D1::Point2F( point1.X, point1.Y );\r
-               D2D1_POINT_2F point2_n = D2D1::Point2F( point2.X, point2.Y );\r
-\r
-               InternalPointer->DrawLine( point1_n, point2_n, brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawLine( Brush^ brush, PointF point1, PointF point2, float strokeWidth )\r
-       {\r
-               D2D1_POINT_2F point1_n = D2D1::Point2F( point1.X, point1.Y );\r
-               D2D1_POINT_2F point2_n = D2D1::Point2F( point2.X, point2.Y );\r
-\r
-               InternalPointer->DrawLine( point1_n, point2_n, brush->InternalPointer, strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawLine( Brush^ brush, PointF point1, PointF point2, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               ID2D1StrokeStyle *style = strokeStyle == nullptr ? NULL : strokeStyle->InternalPointer;\r
-               D2D1_POINT_2F point1_n = D2D1::Point2F( point1.X, point1.Y );\r
-               D2D1_POINT_2F point2_n = D2D1::Point2F( point2.X, point2.Y );\r
-\r
-               InternalPointer->DrawLine( point1_n, point2_n, brush->InternalPointer, strokeWidth, style );\r
-       }\r
-\r
-       void RenderTarget::DrawLine( Brush^ brush, float x1, float y1, float x2, float y2 )\r
-       {\r
-               DrawLine( brush, PointF( x1, y1 ), PointF( x2, y2 ) );\r
-       }\r
-\r
-       void RenderTarget::DrawLine( Brush^ brush, float x1, float y1, float x2, float y2, float strokeWidth )\r
-       {\r
-               DrawLine( brush, PointF( x1, y1 ), PointF( x2, y2 ), strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawLine( Brush^ brush, float x1, float y1, float x2, float y2, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               DrawLine( brush, PointF( x1, y1 ), PointF( x2, y2 ), strokeWidth, strokeStyle );\r
-       }\r
-\r
-       void RenderTarget::FillRectangle( Brush^ brush, System::Drawing::Rectangle rectangle )\r
-       {\r
-               FillRectangle( brush, RectangleF( static_cast<FLOAT>( rectangle.X ), static_cast<FLOAT>( rectangle.Y ), \r
-                       static_cast<FLOAT>( rectangle.Width ), static_cast<FLOAT>( rectangle.Height ) ) );\r
-       }\r
-\r
-       void RenderTarget::FillRectangle( Brush^ brush, RectangleF rectangle )\r
-       {\r
-               D2D1_RECT_F rect = D2D1::RectF( rectangle.Left, rectangle.Top, rectangle.Right, rectangle.Bottom );\r
-               InternalPointer->FillRectangle( rect, brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::FillRoundedRectangle( Brush^ brush, RoundedRectangle rectangle )\r
-       {\r
-               InternalPointer->FillRoundedRectangle( reinterpret_cast<D2D1_ROUNDED_RECT*>( &rectangle ), brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::FillEllipse( Brush^ brush, Ellipse ellipse )\r
-       {\r
-               InternalPointer->FillEllipse( reinterpret_cast<D2D1_ELLIPSE*>( &ellipse ), brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawRectangle( Brush^ brush, System::Drawing::Rectangle rectangle )\r
-       {\r
-               DrawRectangle( brush, CastRectangle( rectangle ) );\r
-       }\r
-\r
-       void RenderTarget::DrawRectangle( Brush^ brush, System::Drawing::Rectangle rectangle, float strokeWidth )\r
-       {\r
-               DrawRectangle( brush, CastRectangle( rectangle ), strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawRectangle( Brush^ brush, System::Drawing::Rectangle rectangle, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               DrawRectangle( brush, CastRectangle( rectangle ), strokeWidth, strokeStyle );\r
-       }\r
-\r
-       void RenderTarget::DrawRectangle( Brush^ brush, RectangleF rectangle )\r
-       {\r
-               D2D1_RECT_F rect = D2D1::RectF( rectangle.Left, rectangle.Top, rectangle.Right, rectangle.Bottom );\r
-               InternalPointer->DrawRectangle( rect, brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawRectangle( Brush^ brush, RectangleF rectangle, float strokeWidth )\r
-       {\r
-               D2D1_RECT_F rect = D2D1::RectF( rectangle.Left, rectangle.Top, rectangle.Right, rectangle.Bottom );\r
-               InternalPointer->DrawRectangle( rect, brush->InternalPointer, strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawRectangle( Brush^ brush, RectangleF rectangle, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               ID2D1StrokeStyle *style = strokeStyle == nullptr ? NULL : strokeStyle->InternalPointer;\r
-               D2D1_RECT_F rect = D2D1::RectF( rectangle.Left, rectangle.Top, rectangle.Right, rectangle.Bottom );\r
-\r
-               InternalPointer->DrawRectangle( rect, brush->InternalPointer, strokeWidth, style );\r
-       }\r
-\r
-       void RenderTarget::DrawRoundedRectangle( Brush^ brush, RoundedRectangle rectangle )\r
-       {\r
-               InternalPointer->DrawRoundedRectangle( reinterpret_cast<D2D1_ROUNDED_RECT*>( &rectangle ), brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawRoundedRectangle( Brush^ brush, RoundedRectangle rectangle, float strokeWidth )\r
-       {\r
-               InternalPointer->DrawRoundedRectangle( reinterpret_cast<D2D1_ROUNDED_RECT*>( &rectangle ), brush->InternalPointer, strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawRoundedRectangle( Brush^ brush, RoundedRectangle rectangle, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               ID2D1StrokeStyle *style = strokeStyle == nullptr ? NULL : strokeStyle->InternalPointer;\r
-\r
-               InternalPointer->DrawRoundedRectangle( reinterpret_cast<D2D1_ROUNDED_RECT*>( &rectangle ), brush->InternalPointer, strokeWidth, style );\r
-       }\r
-\r
-       void RenderTarget::DrawEllipse( Brush^ brush, Ellipse ellipse )\r
-       {\r
-               InternalPointer->DrawEllipse( reinterpret_cast<D2D1_ELLIPSE*>( &ellipse ), brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawEllipse( Brush^ brush, Ellipse ellipse, float strokeWidth )\r
-       {\r
-               InternalPointer->DrawEllipse( reinterpret_cast<D2D1_ELLIPSE*>( &ellipse ), brush->InternalPointer, strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawEllipse( Brush^ brush, Ellipse ellipse, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               ID2D1StrokeStyle *style = strokeStyle == nullptr ? NULL : strokeStyle->InternalPointer;\r
-\r
-               InternalPointer->DrawEllipse( reinterpret_cast<D2D1_ELLIPSE*>( &ellipse ), brush->InternalPointer, strokeWidth, style );\r
-       }\r
-\r
-       void RenderTarget::DrawTextLayout( Point origin, SlimDX::DirectWrite::TextLayout^ textLayout, Brush^ defaultBrush )\r
-       {\r
-               DrawTextLayout( origin, textLayout, defaultBrush, DrawTextOptions::None );\r
-       }\r
-\r
-       void RenderTarget::DrawTextLayout( Point origin, SlimDX::DirectWrite::TextLayout^ textLayout, Brush^ defaultBrush, DrawTextOptions options )\r
-       {\r
-               D2D1_POINT_2F po = D2D1::Point2F( static_cast<FLOAT>( origin.X ), static_cast<FLOAT>( origin.Y ) );\r
-\r
-               InternalPointer->DrawTextLayout( po, textLayout->InternalPointer, defaultBrush->InternalPointer, static_cast<D2D1_DRAW_TEXT_OPTIONS>( options ) );\r
-       }\r
-\r
-       void RenderTarget::DrawTextLayout( PointF origin, SlimDX::DirectWrite::TextLayout^ textLayout, Brush^ defaultBrush )\r
-       {\r
-               DrawTextLayout( origin, textLayout, defaultBrush, DrawTextOptions::None );\r
-       }\r
-\r
-       void RenderTarget::DrawTextLayout( PointF origin, SlimDX::DirectWrite::TextLayout^ textLayout, Brush^ defaultBrush, DrawTextOptions options )\r
-       {\r
-               D2D1_POINT_2F po = D2D1::Point2F( origin.X, origin.Y );\r
-\r
-               InternalPointer->DrawTextLayout( po, textLayout->InternalPointer, defaultBrush->InternalPointer, static_cast<D2D1_DRAW_TEXT_OPTIONS>( options ) );\r
-       }\r
-\r
-#pragma push_macro("DrawText")\r
-#undef DrawText\r
-       void RenderTarget::DrawText( String^ text, SlimDX::DirectWrite::TextFormat^ textFormat, System::Drawing::Rectangle layoutRectangle, Brush^ defaultBrush )\r
-       {\r
-               RectangleF rect = CastRectangle( layoutRectangle );\r
-\r
-               DrawText( text, textFormat, rect, defaultBrush );\r
-       }\r
-\r
-       void RenderTarget::DrawText( String^ text, SlimDX::DirectWrite::TextFormat^ textFormat, System::Drawing::Rectangle layoutRectangle, Brush^ defaultBrush, DrawTextOptions options, SlimDX::DirectWrite::MeasuringMethod measuringMethod )\r
-       {\r
-               RectangleF rect = CastRectangle( layoutRectangle );\r
-\r
-               DrawText( text, textFormat, rect, defaultBrush, options, measuringMethod );\r
-       }\r
-\r
-       void RenderTarget::DrawText( String^ text, SlimDX::DirectWrite::TextFormat^ textFormat, System::Drawing::RectangleF layoutRectangle, Brush^ defaultBrush )\r
-       {\r
-               D2D1_RECT_F rect = D2D1::RectF( layoutRectangle.Left, layoutRectangle.Top, layoutRectangle.Right, layoutRectangle.Bottom );\r
-               pin_ptr<const wchar_t> pinnedText = PtrToStringChars( text );\r
-\r
-               InternalPointer->DrawTextW( pinnedText, text->Length, textFormat->InternalPointer, rect, defaultBrush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawText( String^ text, SlimDX::DirectWrite::TextFormat^ textFormat, System::Drawing::RectangleF layoutRectangle, Brush^ defaultBrush, DrawTextOptions options, SlimDX::DirectWrite::MeasuringMethod measuringMethod )\r
-       {\r
-               D2D1_RECT_F rect = D2D1::RectF( layoutRectangle.Left, layoutRectangle.Top, layoutRectangle.Right, layoutRectangle.Bottom );\r
-               pin_ptr<const wchar_t> pinnedText = PtrToStringChars( text );\r
-\r
-               InternalPointer->DrawTextW( pinnedText, text->Length, textFormat->InternalPointer, rect, defaultBrush->InternalPointer,\r
-                       static_cast<D2D1_DRAW_TEXT_OPTIONS>( options ), static_cast<DWRITE_MEASURING_MODE>( measuringMethod ) );\r
-       }\r
-#pragma pop_macro("DrawText")\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap )\r
-       {\r
-               InternalPointer->DrawBitmap( bitmap->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::RectangleF destinationRectangle )\r
-       {\r
-               D2D1_RECT_F destRect = D2D1::RectF( destinationRectangle.Left, destinationRectangle.Top, destinationRectangle.Right, destinationRectangle.Bottom );\r
-\r
-               InternalPointer->DrawBitmap( bitmap->InternalPointer, &destRect );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::RectangleF destinationRectangle, float opacity )\r
-       {\r
-               D2D1_RECT_F destRect = D2D1::RectF( destinationRectangle.Left, destinationRectangle.Top, destinationRectangle.Right, destinationRectangle.Bottom );\r
-\r
-               InternalPointer->DrawBitmap( bitmap->InternalPointer, &destRect, opacity );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::RectangleF destinationRectangle, float opacity, InterpolationMode interpolationMode )\r
-       {\r
-               D2D1_RECT_F destRect = D2D1::RectF( destinationRectangle.Left, destinationRectangle.Top, destinationRectangle.Right, destinationRectangle.Bottom );\r
-\r
-               InternalPointer->DrawBitmap( bitmap->InternalPointer, &destRect, opacity, static_cast<D2D1_BITMAP_INTERPOLATION_MODE>( interpolationMode ) );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::RectangleF destinationRectangle, float opacity, InterpolationMode interpolationMode, System::Drawing::RectangleF sourceRectangle )\r
-       {\r
-               D2D1_RECT_F sourceRect = D2D1::RectF( sourceRectangle.Left, sourceRectangle.Top, sourceRectangle.Right, sourceRectangle.Bottom );\r
-               D2D1_RECT_F destRect = D2D1::RectF( destinationRectangle.Left, destinationRectangle.Top, destinationRectangle.Right, destinationRectangle.Bottom );\r
-\r
-               InternalPointer->DrawBitmap( bitmap->InternalPointer, &destRect, opacity, static_cast<D2D1_BITMAP_INTERPOLATION_MODE>( interpolationMode ), &sourceRect );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::Rectangle destinationRectangle )\r
-       {\r
-               DrawBitmap( bitmap, CastRectangle( destinationRectangle ) );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::Rectangle destinationRectangle, float opacity )\r
-       {\r
-               DrawBitmap( bitmap, CastRectangle( destinationRectangle ), opacity );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::Rectangle destinationRectangle, float opacity, InterpolationMode interpolationMode )\r
-       {\r
-               DrawBitmap( bitmap, CastRectangle( destinationRectangle ), opacity, interpolationMode );\r
-       }\r
-\r
-       void RenderTarget::DrawBitmap( Bitmap^ bitmap, System::Drawing::Rectangle destinationRectangle, float opacity, InterpolationMode interpolationMode, System::Drawing::Rectangle sourceRectangle )\r
-       {\r
-               DrawBitmap( bitmap, CastRectangle( destinationRectangle ), opacity, interpolationMode, CastRectangle( sourceRectangle ) );\r
-       }\r
-\r
-       void RenderTarget::DrawGeometry( Geometry^ geometry, Brush^ brush )\r
-       {\r
-               InternalPointer->DrawGeometry( geometry->InternalPointer, brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::DrawGeometry( Geometry^ geometry, Brush^ brush, float strokeWidth )\r
-       {\r
-               InternalPointer->DrawGeometry( geometry->InternalPointer, brush->InternalPointer, strokeWidth );\r
-       }\r
-\r
-       void RenderTarget::DrawGeometry( Geometry^ geometry, Brush^ brush, float strokeWidth, StrokeStyle^ strokeStyle )\r
-       {\r
-               ID2D1StrokeStyle *style = strokeStyle == nullptr ? NULL : strokeStyle->InternalPointer;\r
-\r
-               InternalPointer->DrawGeometry( geometry->InternalPointer, brush->InternalPointer, strokeWidth, style );\r
-       }\r
-\r
-       void RenderTarget::FillGeometry( Geometry^ geometry, Brush^ brush )\r
-       {\r
-               FillGeometry( geometry, brush, nullptr );\r
-       }\r
-\r
-       void RenderTarget::FillGeometry( Geometry^ geometry, Brush^ brush, Brush^ opacityBrush )\r
-       {\r
-               ID2D1Brush *ob = opacityBrush == nullptr ? NULL : opacityBrush->InternalPointer;\r
-               InternalPointer->FillGeometry( geometry->InternalPointer, brush->InternalPointer, ob );\r
-       }\r
-\r
-       void RenderTarget::FillOpacityMask( Bitmap^ mask, Brush^ brush, OpacityMaskContent content, Nullable<RectangleF> sourceRectangle, Nullable<RectangleF> destinationRectangle )\r
-       {\r
-               D2D1_RECT_F sourceRect;\r
-               D2D1_RECT_F destRect;\r
-\r
-               D2D1_RECT_F *sourceRectPtr = NULL;\r
-               D2D1_RECT_F *destRectPtr = NULL;\r
-\r
-               if( sourceRectangle.HasValue )\r
-               {\r
-                       sourceRect = D2D1::RectF( sourceRectangle.Value.Left, sourceRectangle.Value.Top, sourceRectangle.Value.Right, sourceRectangle.Value.Bottom );\r
-                       sourceRectPtr = &sourceRect;\r
-               }\r
-\r
-               if( destinationRectangle.HasValue )\r
-               {\r
-                       destRect = D2D1::RectF( destinationRectangle.Value.Left, destinationRectangle.Value.Top, destinationRectangle.Value.Right, destinationRectangle.Value.Bottom );\r
-                       destRectPtr = &destRect;\r
-               }\r
-\r
-               InternalPointer->FillOpacityMask( mask->InternalPointer, brush->InternalPointer, static_cast<D2D1_OPACITY_MASK_CONTENT>( content ), \r
-                       destRectPtr, sourceRectPtr );\r
-       }\r
-\r
-       void RenderTarget::FillMesh( Mesh^ mesh, Brush^ brush )\r
-       {\r
-               InternalPointer->FillMesh( mesh->InternalPointer, brush->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::PopAxisAlignedClip()\r
-       {\r
-               InternalPointer->PopAxisAlignedClip();\r
-       }\r
-\r
-       void RenderTarget::PushAxisAlignedClip( System::Drawing::RectangleF clippingArea, SlimDX::Direct2D::AntialiasMode antialiasMode )\r
-       {\r
-               D2D1_RECT_F rect = D2D1::RectF( clippingArea.Left, clippingArea.Top, clippingArea.Right, clippingArea.Bottom );\r
-               InternalPointer->PushAxisAlignedClip( rect, static_cast<D2D1_ANTIALIAS_MODE>( antialiasMode ) );\r
-       }\r
-\r
-       void RenderTarget::PushAxisAlignedClip( System::Drawing::Rectangle clippingArea, SlimDX::Direct2D::AntialiasMode antialiasMode )\r
-       {\r
-               PushAxisAlignedClip( RectangleF( static_cast<float>( clippingArea.X ), static_cast<float>( clippingArea.Y ), \r
-                       static_cast<float>( clippingArea.Width ), static_cast<float>( clippingArea.Height ) ), antialiasMode );\r
-       }\r
-\r
-       Bitmap^ RenderTarget::CreateSharedBitmap( Guid guid, DataStream^ data )\r
-       {\r
-               ID2D1Bitmap *bitmap = NULL;\r
-\r
-               HRESULT hr = InternalPointer->CreateSharedBitmap( Utilities::ConvertManagedGuid( guid ), data->PositionPointer, NULL, &bitmap );\r
-               if( RECORD_D2D( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return Bitmap::FromPointer( bitmap );\r
-       }\r
-\r
-       void RenderTarget::PopLayer()\r
-       {\r
-               InternalPointer->PopLayer();\r
-       }\r
-\r
-       void RenderTarget::PushLayer( Layer^ layer, LayerParameters^ parameters )\r
-       {\r
-               D2D1_LAYER_PARAMETERS params = parameters == nullptr ? D2D1::LayerParameters() : parameters->ToUnmanaged();\r
-               InternalPointer->PushLayer( params, layer->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::SaveDrawingState( StateBlock^ stateBlock )\r
-       {\r
-               InternalPointer->SaveDrawingState( stateBlock->InternalPointer );\r
-       }\r
-\r
-       void RenderTarget::RestoreDrawingState( StateBlock^ stateBlock )\r
-       {\r
-               InternalPointer->RestoreDrawingState( stateBlock->InternalPointer );\r
-       }\r
-\r
-       SlimDX::DirectWrite::RenderingParameters^ RenderTarget::TextRenderingParameters::get()\r
-       {\r
-               IDWriteRenderingParams *pointer = NULL;\r
-               InternalPointer->GetTextRenderingParams( &pointer );\r
-\r
-               return SlimDX::DirectWrite::RenderingParameters::FromPointer( pointer );\r
-       }\r
-\r
-       void RenderTarget::TextRenderingParameters::set( SlimDX::DirectWrite::RenderingParameters^ value )\r
-       {\r
-               IDWriteRenderingParams *pointer = value == nullptr ? NULL : value->InternalPointer;\r
-               InternalPointer->SetTextRenderingParams( pointer );\r
-       }\r
-\r
-       SlimDX::Direct2D::PixelFormat RenderTarget::PixelFormat::get()\r
-       {\r
-               D2D1_PIXEL_FORMAT pf = InternalPointer->GetPixelFormat();\r
-               return SlimDX::Direct2D::PixelFormat( static_cast<SlimDX::DXGI::Format>( pf.format ), static_cast<AlphaMode>( pf.alphaMode ) );\r
-       }\r
-\r
-       Matrix3x2 RenderTarget::Transform::get()\r
-       {\r
-               Matrix3x2 result;\r
-               InternalPointer->GetTransform( reinterpret_cast<D2D1_MATRIX_3X2_F*>( &result ) );\r
-\r
-               return result;\r
-       }\r
-\r
-       void RenderTarget::Transform::set( Matrix3x2 value )\r
-       {\r
-               InternalPointer->SetTransform( reinterpret_cast<D2D1_MATRIX_3X2_F*>( &value ) );\r
-       }\r
-\r
-       System::Drawing::SizeF RenderTarget::Size::get()\r
-       {\r
-               D2D1_SIZE_F size = InternalPointer->GetSize();\r
-               return System::Drawing::SizeF( size.width, size.height );\r
-       }\r
-\r
-       System::Drawing::Size RenderTarget::PixelSize::get()\r
-       {\r
-               D2D1_SIZE_U size = InternalPointer->GetPixelSize();\r
-               return System::Drawing::Size( size.width, size.height );\r
-       }\r
-\r
-       System::Drawing::SizeF RenderTarget::DotsPerInch::get()\r
-       {\r
-               float x, y;\r
-               InternalPointer->GetDpi( &x, &y );\r
-               return System::Drawing::SizeF( x, y );\r
-       }\r
-\r
-       void RenderTarget::DotsPerInch::set( SizeF value )\r
-       {\r
-               InternalPointer->SetDpi( value.Width, value.Height );\r
-       }\r
-\r
-       SlimDX::Direct2D::AntialiasMode RenderTarget::AntialiasMode::get()\r
-       {\r
-               return static_cast<SlimDX::Direct2D::AntialiasMode>( InternalPointer->GetAntialiasMode() );\r
-       }\r
-\r
-       void RenderTarget::AntialiasMode::set( SlimDX::Direct2D::AntialiasMode value )\r
-       {\r
-               InternalPointer->SetAntialiasMode( static_cast<D2D1_ANTIALIAS_MODE>( value ) );\r
-       }\r
-\r
-       SlimDX::Direct2D::TextAntialiasMode RenderTarget::TextAntialiasMode::get()\r
-       {\r
-               return static_cast<SlimDX::Direct2D::TextAntialiasMode>( InternalPointer->GetTextAntialiasMode() );\r
-       }\r
-\r
-       void RenderTarget::TextAntialiasMode::set( SlimDX::Direct2D::TextAntialiasMode value )\r
-       {\r
-               InternalPointer->SetTextAntialiasMode( static_cast<D2D1_TEXT_ANTIALIAS_MODE>( value ) );\r
-       }\r
-}\r
-}
\ No newline at end of file