+++ /dev/null
-/*\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
-#include <vector>\r
-\r
-#include "DirectWriteException.h"\r
-#include "InlineObject.h"\r
-#include "TextFormat.h"\r
-\r
-const IID IID_IDWriteTextFormat = __uuidof(IDWriteTextFormat);\r
-\r
-using namespace System;\r
-\r
-namespace SlimDX\r
-{\r
-namespace DirectWrite\r
-{\r
- TextFormat::TextFormat( Factory^ factory, String^ familyName, SlimDX::DirectWrite::FontWeight weight, SlimDX::DirectWrite::FontStyle style, SlimDX::DirectWrite::FontStretch stretch, \r
- float fontSize, String^ localeName, SlimDX::DirectWrite::FontCollection^ fontCollection )\r
- {\r
- Init( factory, familyName, weight, style, stretch, fontSize, localeName, fontCollection );\r
- }\r
-\r
- TextFormat::TextFormat( Factory^ factory, String^ familyName, SlimDX::DirectWrite::FontWeight weight, SlimDX::DirectWrite::FontStyle style, SlimDX::DirectWrite::FontStretch stretch, \r
- float fontSize, String^ localeName )\r
- {\r
- Init( factory, familyName, weight, style, stretch, fontSize, localeName, nullptr );\r
- }\r
-\r
- void TextFormat::Init( Factory^ factory, String^ familyName, SlimDX::DirectWrite::FontWeight weight, SlimDX::DirectWrite::FontStyle style, SlimDX::DirectWrite::FontStretch stretch, \r
- float fontSize, String^ localeName, SlimDX::DirectWrite::FontCollection^ fontCollection )\r
- {\r
- IDWriteTextFormat *textFormat = NULL;\r
- IDWriteFontCollection *fc = fontCollection == nullptr ? NULL : fontCollection->InternalPointer;\r
- pin_ptr<const wchar_t> pinnedName = PtrToStringChars( familyName );\r
- pin_ptr<const wchar_t> pinnedLocale = PtrToStringChars( localeName );\r
-\r
- HRESULT hr = factory->InternalPointer->CreateTextFormat( pinnedName, fc, static_cast<DWRITE_FONT_WEIGHT>( weight ), static_cast<DWRITE_FONT_STYLE>( style ),\r
- static_cast<DWRITE_FONT_STRETCH>( stretch ), fontSize, pinnedLocale, &textFormat );\r
-\r
- if( RECORD_DW( hr ).IsFailure )\r
- throw gcnew DirectWriteException( Result::Last );\r
-\r
- Construct( textFormat );\r
- }\r
-\r
- SlimDX::DirectWrite::FlowDirection TextFormat::FlowDirection::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::FlowDirection>(InternalPointer->GetFlowDirection());\r
- }\r
-\r
- void TextFormat::FlowDirection::set(SlimDX::DirectWrite::FlowDirection value)\r
- {\r
- InternalPointer->SetFlowDirection(static_cast<DWRITE_FLOW_DIRECTION>(value));\r
- }\r
-\r
- SlimDX::DirectWrite::FontCollection ^TextFormat::FontCollection::get()\r
- {\r
- IDWriteFontCollection *collection;\r
- if (RECORD_DW(InternalPointer->GetFontCollection(&collection)).IsFailure)\r
- {\r
- return nullptr;\r
- }\r
-\r
- return SlimDX::DirectWrite::FontCollection::FromPointer(collection);\r
- }\r
-\r
- String ^TextFormat::FontFamilyName::get()\r
- {\r
- UINT32 count = InternalPointer->GetFontFamilyNameLength();\r
- std::vector<WCHAR> name;\r
- name.resize(count + 1);\r
- if (RECORD_DW(InternalPointer->GetFontFamilyName(&name[0], static_cast<UINT32>(name.size()))).IsFailure)\r
- {\r
- return String::Empty;\r
- }\r
- return gcnew String(&name[0]);\r
- }\r
-\r
- float TextFormat::FontSize::get()\r
- {\r
- return InternalPointer->GetFontSize();\r
- }\r
-\r
- SlimDX::DirectWrite::FontStretch TextFormat::FontStretch::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::FontStretch>(InternalPointer->GetFontStretch());\r
- }\r
-\r
- SlimDX::DirectWrite::FontStyle TextFormat::FontStyle::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::FontStyle>(InternalPointer->GetFontStyle());\r
- }\r
-\r
- SlimDX::DirectWrite::FontWeight TextFormat::FontWeight::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::FontWeight>(InternalPointer->GetFontWeight());\r
- }\r
-\r
- float TextFormat::IncrementalTabStop::get()\r
- {\r
- return InternalPointer->GetIncrementalTabStop();\r
- }\r
-\r
- void TextFormat::IncrementalTabStop::set(float value)\r
- {\r
- RECORD_DW(InternalPointer->SetIncrementalTabStop(value));\r
- }\r
-\r
- Result TextFormat::GetLineSpacing([Out] LineSpacingMethod %method, [Out] float %lineSpacing, [Out] float %baseline)\r
- {\r
- DWRITE_LINE_SPACING_METHOD nativeMethod;\r
- float nativeLineSpacing, nativeBaseline;\r
- Result result = RECORD_DW(InternalPointer->GetLineSpacing(&nativeMethod, &nativeLineSpacing, &nativeBaseline));\r
- method = static_cast<LineSpacingMethod>(nativeMethod);\r
- lineSpacing = nativeLineSpacing;\r
- baseline = nativeBaseline;\r
- return result;\r
- }\r
-\r
- Result TextFormat::SetLineSpacing(LineSpacingMethod method, float lineSpacing, float baseline)\r
- {\r
- return RECORD_DW(InternalPointer->SetLineSpacing(static_cast<DWRITE_LINE_SPACING_METHOD>(method), lineSpacing, baseline));\r
- }\r
-\r
- String ^TextFormat::LocaleName::get()\r
- {\r
- UINT32 count = InternalPointer->GetLocaleNameLength();\r
- std::vector<WCHAR> name;\r
- name.resize(count + 1);\r
- if (RECORD_DW(InternalPointer->GetLocaleName(&name[0], static_cast<UINT32>(name.size()))).IsFailure)\r
- {\r
- return String::Empty;\r
- }\r
- return gcnew String(&name[0]);\r
- }\r
-\r
- SlimDX::DirectWrite::ParagraphAlignment TextFormat::ParagraphAlignment::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::ParagraphAlignment>( InternalPointer->GetParagraphAlignment() );\r
- }\r
-\r
- void TextFormat::ParagraphAlignment::set( SlimDX::DirectWrite::ParagraphAlignment value )\r
- {\r
- InternalPointer->SetParagraphAlignment( static_cast<DWRITE_PARAGRAPH_ALIGNMENT>( value ) );\r
- }\r
-\r
- SlimDX::DirectWrite::ReadingDirection TextFormat::ReadingDirection::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::ReadingDirection>(InternalPointer->GetReadingDirection());\r
- }\r
-\r
- void TextFormat::ReadingDirection::set(SlimDX::DirectWrite::ReadingDirection value)\r
- {\r
- RECORD_DW(InternalPointer->SetReadingDirection(static_cast<DWRITE_READING_DIRECTION>(value)));\r
- }\r
-\r
- SlimDX::DirectWrite::TextAlignment TextFormat::TextAlignment::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::TextAlignment>( InternalPointer->GetTextAlignment() );\r
- }\r
-\r
- void TextFormat::TextAlignment::set( SlimDX::DirectWrite::TextAlignment value )\r
- {\r
- InternalPointer->SetTextAlignment( static_cast<DWRITE_TEXT_ALIGNMENT>( value ) );\r
- }\r
-\r
- static Trimming GetTrimmingInternal(IDWriteTextFormat *format, IDWriteInlineObject **obj)\r
- {\r
- DWRITE_TRIMMING trimming;\r
- if (RECORD_DW(format->GetTrimming(&trimming, obj)).IsFailure)\r
- {\r
- DWRITE_TRIMMING zero = { DWRITE_TRIMMING_GRANULARITY(0) };\r
- trimming = zero;\r
- }\r
- return Trimming(static_cast<TrimmingGranularity>(trimming.granularity),\r
- trimming.delimiter, trimming.delimiterCount);\r
- }\r
-\r
- Trimming TextFormat::GetTrimming()\r
- {\r
- return GetTrimmingInternal(InternalPointer, 0);\r
- }\r
- Trimming TextFormat::GetTrimming([Out] InlineObject ^%trimmingSign)\r
- {\r
- IDWriteInlineObject *obj = 0;\r
- Trimming result = GetTrimmingInternal(InternalPointer, &obj);\r
- if (obj)\r
- {\r
- trimmingSign = InlineObject::FromPointer(obj);\r
- }\r
- return result;\r
- }\r
-\r
- SlimDX::DirectWrite::WordWrapping TextFormat::WordWrapping::get()\r
- {\r
- return static_cast<SlimDX::DirectWrite::WordWrapping>(InternalPointer->GetWordWrapping());\r
- }\r
-\r
- void TextFormat::WordWrapping::set(SlimDX::DirectWrite::WordWrapping value)\r
- {\r
- RECORD_DW(InternalPointer->SetWordWrapping(static_cast<DWRITE_WORD_WRAPPING>(value)));\r
- }\r
-}\r
-}
\ No newline at end of file