From: JoogabYun <40262755+JoogabYun@users.noreply.github.com> Date: Thu, 4 Jun 2020 02:22:38 +0000 (+0900) Subject: [NUI] circular text (#1634) X-Git-Tag: accepted/tizen/unified/20210219.040944~711 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2aa79b1655977bc7a0b2376c506cfea73a4b3c32;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] circular text (#1634) --- diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.PixelBuffer.cs b/src/Tizen.NUI/src/internal/Interop/Interop.PixelBuffer.cs index b32ce8a..5b3ba30 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.PixelBuffer.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.PixelBuffer.cs @@ -63,6 +63,9 @@ namespace Tizen.NUI [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_PixelBuffer_Resize")] public static extern void PixelBuffer_Resize(global::System.Runtime.InteropServices.HandleRef jarg1, ushort jarg2, ushort jarg3); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_PixelBuffer_Rotate")] + public static extern bool PixelBuffer_Rotate(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); } } } \ No newline at end of file diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.TextUtils.cs b/src/Tizen.NUI/src/internal/Interop/Interop.TextUtils.cs new file mode 100755 index 0000000..13bd92e --- /dev/null +++ b/src/Tizen.NUI/src/internal/Interop/Interop.TextUtils.cs @@ -0,0 +1,239 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace Tizen.NUI +{ + internal static partial class Interop + { + internal static partial class RendererParameters + { + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_RendererParameters_0")] + public static extern global::System.IntPtr new_RendererParameters__SWIG_0(); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_text_set")] + public static extern void RendererParameters_text_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_text_get")] + public static extern string RendererParameters_text_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_horizontalAlignment_set")] + public static extern void RendererParameters_horizontalAlignment_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_horizontalAlignment_get")] + public static extern string RendererParameters_horizontalAlignment_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_verticalAlignment_set")] + public static extern void RendererParameters_verticalAlignment_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_verticalAlignment_get")] + public static extern string RendererParameters_verticalAlignment_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontFamily_set")] + public static extern void RendererParameters_fontFamily_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontFamily_get")] + public static extern string RendererParameters_fontFamily_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontWeight_set")] + public static extern void RendererParameters_fontWeight_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontWeight_get")] + public static extern string RendererParameters_fontWeight_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontWidth_set")] + public static extern void RendererParameters_fontWidth_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontWidth_get")] + public static extern string RendererParameters_fontWidth_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontSlant_set")] + public static extern void RendererParameters_fontSlant_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontSlant_get")] + public static extern string RendererParameters_fontSlant_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_layout_set")] + public static extern void RendererParameters_layout_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_layout_get")] + public static extern string RendererParameters_layout_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_circularAlignment_set")] + public static extern void RendererParameters_circularAlignment_set(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_circularAlignment_get")] + public static extern string RendererParameters_circularAlignment_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_textColor_set")] + public static extern void RendererParameters_textColor_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_textColor_get")] + public static extern global::System.IntPtr RendererParameters_textColor_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontSize_set")] + public static extern void RendererParameters_fontSize_set(global::System.Runtime.InteropServices.HandleRef jarg1, float jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_fontSize_get")] + public static extern float RendererParameters_fontSize_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_textWidth_set")] + public static extern void RendererParameters_textWidth_set(global::System.Runtime.InteropServices.HandleRef jarg1, uint jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_textWidth_get")] + public static extern uint RendererParameters_textWidth_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_textHeight_set")] + public static extern void RendererParameters_textHeight_set(global::System.Runtime.InteropServices.HandleRef jarg1, uint jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_textHeight_get")] + public static extern uint RendererParameters_textHeight_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_radius_set")] + public static extern void RendererParameters_radius_set(global::System.Runtime.InteropServices.HandleRef jarg1, uint jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_radius_get")] + public static extern uint RendererParameters_radius_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_beginAngle_set")] + public static extern void RendererParameters_beginAngle_set(global::System.Runtime.InteropServices.HandleRef jarg1, float jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_beginAngle_get")] + public static extern float RendererParameters_beginAngle_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_incrementAngle_set")] + public static extern void RendererParameters_incrementAngle_set(global::System.Runtime.InteropServices.HandleRef jarg1, float jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_incrementAngle_get")] + public static extern float RendererParameters_incrementAngle_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_ellipsisEnabled_set")] + public static extern void RendererParameters_ellipsisEnabled_set(global::System.Runtime.InteropServices.HandleRef jarg1, bool jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_ellipsisEnabled_get")] + public static extern bool RendererParameters_ellipsisEnabled_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_markupEnabled_set")] + public static extern void RendererParameters_markupEnabled_set(global::System.Runtime.InteropServices.HandleRef jarg1, bool jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_markupEnabled_get")] + public static extern bool RendererParameters_markupEnabled_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_isTextColorSet_set")] + public static extern void RendererParameters_isTextColorSet_set(global::System.Runtime.InteropServices.HandleRef jarg1, bool jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_RendererParameters_isTextColorSet_get")] + public static extern bool RendererParameters_isTextColorSet_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_RendererParameters")] + public static extern void delete_RendererParameters(global::System.Runtime.InteropServices.HandleRef jarg1); + } + + internal static partial class EmbeddedItemInfo + { + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_EmbeddedItemInfo_0")] + public static extern global::System.IntPtr new_EmbeddedItemInfo__SWIG_0(); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_EmbeddedItemInfo")] + public static extern void delete_EmbeddedItemInfo(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_characterIndex_set")] + public static extern void EmbeddedItemInfo_characterIndex_set(global::System.Runtime.InteropServices.HandleRef jarg1, uint jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_characterIndex_get")] + public static extern uint EmbeddedItemInfo_characterIndex_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_glyphIndex_set")] + public static extern void EmbeddedItemInfo_glyphIndex_set(global::System.Runtime.InteropServices.HandleRef jarg1, uint jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_glyphIndex_get")] + public static extern uint EmbeddedItemInfo_glyphIndex_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_position_set")] + public static extern void EmbeddedItemInfo_position_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_position_get")] + public static extern global::System.IntPtr EmbeddedItemInfo_position_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_size_set")] + public static extern void EmbeddedItemInfo_size_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_size_get")] + public static extern global::System.IntPtr EmbeddedItemInfo_size_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_rotatedSize_set")] + public static extern void EmbeddedItemInfo_rotatedSize_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_rotatedSize_get")] + public static extern global::System.IntPtr EmbeddedItemInfo_rotatedSize_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_angle_set")] + public static extern void EmbeddedItemInfo_angle_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_angle_get")] + public static extern global::System.IntPtr EmbeddedItemInfo_angle_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_colorBlendingMode_set")] + public static extern void EmbeddedItemInfo_colorBlendingMode_set(global::System.Runtime.InteropServices.HandleRef jarg1, Tizen.NUI.ColorBlendingMode jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_EmbeddedItemInfo_colorBlendingMode_get")] + public static extern Tizen.NUI.ColorBlendingMode EmbeddedItemInfo_colorBlendingMode_get(global::System.Runtime.InteropServices.HandleRef jarg1); + } + + internal static partial class ShadowParameters + { + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_new_ShadowParameters_0")] + public static extern global::System.IntPtr new_ShadowParameters__SWIG_0(); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_delete_ShadowParameters")] + public static extern void delete_ShadowParameters(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_input_set")] + public static extern void ShadowParameters_input_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_input_get")] + public static extern global::System.IntPtr ShadowParameters_input_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_textColor_set")] + public static extern void ShadowParameters_textColor_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_textColor_get")] + public static extern global::System.IntPtr ShadowParameters_textColor_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_color_set")] + public static extern void ShadowParameters_color_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_color_get")] + public static extern global::System.IntPtr ShadowParameters_color_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_offset_set")] + public static extern void ShadowParameters_offset_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_offset_get")] + public static extern global::System.IntPtr ShadowParameters_offset_get(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_blendShadow_set")] + public static extern void ShadowParameters_blendShadow_set(global::System.Runtime.InteropServices.HandleRef jarg1, bool jarg2); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_ShadowParameters_blendShadow_get")] + public static extern bool ShadowParameters_blendShadow_get(global::System.Runtime.InteropServices.HandleRef jarg1); + } + + internal static partial class TextUtils + { + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextUtils_Render")] + public static extern global::System.IntPtr TextUtils_Render(global::System.Runtime.InteropServices.HandleRef jarg1, ref global::System.IntPtr jarg2, ref int count, ref int length); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextUtils_CreateShadow")] + public static extern global::System.IntPtr TextUtils_CreateShadow(global::System.Runtime.InteropServices.HandleRef jarg1); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextUtils_ConvertToRgba8888")] + public static extern global::System.IntPtr TextUtils_ConvertToRgba8888(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, bool jarg3); + + [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_TextUtils_UpdateBuffer")] + public static extern void TextUtils_UpdateBuffer(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2, uint jarg3, uint jarg4, bool jarg5); + + } + } +} \ No newline at end of file diff --git a/src/Tizen.NUI/src/public/BaseComponents/TextUtils.cs b/src/Tizen.NUI/src/public/BaseComponents/TextUtils.cs new file mode 100755 index 0000000..895a7e5 --- /dev/null +++ b/src/Tizen.NUI/src/public/BaseComponents/TextUtils.cs @@ -0,0 +1,1005 @@ +/* + * Copyright(c) 2020 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.ComponentModel; +using System.Collections.Generic; +using Tizen.NUI.Binding; + +namespace Tizen.NUI.BaseComponents +{ + /// + /// Class with the text and style parameters to be rendered into a pixel buffer. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public class RendererParameters : Disposable + { + internal RendererParameters(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn) + { + } + + internal static global::System.Runtime.InteropServices.HandleRef getCPtr(RendererParameters obj) + { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } + + protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr) + { + Interop.RendererParameters.delete_RendererParameters(swigCPtr); + } + + /// + /// Construct RendererParameters + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public RendererParameters() : this(Interop.RendererParameters.new_RendererParameters__SWIG_0(), true) + { + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + + /// + /// The text to be rendered + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public string Text + { + set + { + Interop.RendererParameters.RendererParameters_text_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_text_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The horizontal alignment: one of HorizontalAlignment. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public HorizontalAlignment HorizontalAlignment + { + set + { + string alignment = "begin"; + switch(value) + { + case HorizontalAlignment.Begin: { + alignment = "begin"; + break; + } + case HorizontalAlignment.Center: { + alignment = "center"; + break; + } + case HorizontalAlignment.End: { + alignment = "end"; + break; + } + default : { + break; + } + } + Interop.RendererParameters.RendererParameters_horizontalAlignment_set(swigCPtr, alignment); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_horizontalAlignment_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + HorizontalAlignment alignment = HorizontalAlignment.Begin; + switch(ret) + { + case "begin": { + alignment = HorizontalAlignment.Begin; + break; + } + case "center": { + alignment = HorizontalAlignment.Center; + break; + } + case "end": { + alignment = HorizontalAlignment.End; + break; + } + default : { + break; + } + } + return alignment; + } + } + + /// + /// The vertical alignment: one of VerticalAlignment. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public VerticalAlignment VerticalAlignment + { + set + { + string alignment = "top"; + switch(value) + { + case VerticalAlignment.Top: { + alignment = "top"; + break; + } + case VerticalAlignment.Center: { + alignment = "center"; + break; + } + case VerticalAlignment.Bottom: { + alignment = "bottom"; + break; + } + default : { + break; + } + } + Interop.RendererParameters.RendererParameters_verticalAlignment_set(swigCPtr, alignment); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_verticalAlignment_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + VerticalAlignment alignment = VerticalAlignment.Top; + switch(ret) + { + case "top": { + alignment = VerticalAlignment.Top; + break; + } + case "center": { + alignment = VerticalAlignment.Center; + break; + } + case "bottom": { + alignment = VerticalAlignment.Bottom; + break; + } + default : { + break; + } + } + return alignment; + } + } + + /// + /// The font's family. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public string FontFamily + { + set + { + Interop.RendererParameters.RendererParameters_fontFamily_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_fontFamily_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The font's weight: one of {"thin", "ultraLight", "extraLight", "light", "demiLight", "semiLight", "book", "normal", "regular", "medium", "demiBold", "semiBold", "bold", "ultraBold", "extraBold", "black", "heavy", "extraBlack"}. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public string FontWeight + { + set + { + Interop.RendererParameters.RendererParameters_fontWeight_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_fontWeight_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The font's width: one of {"ultraCondensed", "extraCondensed", "condensed", "semiCondensed", "normal", "semiExpanded", "expanded", "extraExpanded", "ultraExpanded"}. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public string FontWidth + { + set + { + Interop.RendererParameters.RendererParameters_fontWidth_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_fontWidth_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The font's slant. one of {"normal", "roman", "italic", "oblique"} + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public string FontSlant + { + set + { + Interop.RendererParameters.RendererParameters_fontSlant_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_fontSlant_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The type of layout: one of TextLayout {"singleLine", "multiLine", "circular"} + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public TextLayout Layout + { + set + { + string textLayout = "singleLine"; + switch(value) + { + case TextLayout.SingleLine: { + textLayout = "singleLine"; + break; + } + case TextLayout.MultiLine: { + textLayout = "multiLine"; + break; + } + case TextLayout.Circular: { + textLayout = "circular"; + break; + } + default : { + break; + } + } + Interop.RendererParameters.RendererParameters_layout_set(swigCPtr, textLayout); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_layout_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + TextLayout textLayout = TextLayout.SingleLine; + switch(ret) + { + case "singleLine": { + textLayout = TextLayout.SingleLine; + break; + } + case "multiLine": { + textLayout = TextLayout.MultiLine; + break; + } + case "circular": { + textLayout = TextLayout.Circular; + break; + } + default : { + break; + } + } + return textLayout; + } + } + + /// + /// The text alignment within the arc: one of CircularAlignment. The @p horizontalAlignment and @p verticalAlignment can be used to align the text within the text area. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public CircularAlignment CircularAlignment + { + set + { + string alignment = "begin"; + switch(value) + { + case CircularAlignment.Begin: { + alignment = "begin"; + break; + } + case CircularAlignment.Center: { + alignment = "center"; + break; + } + case CircularAlignment.End: { + alignment = "end"; + break; + } + default : { + break; + } + } + Interop.RendererParameters.RendererParameters_circularAlignment_set(swigCPtr, alignment); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + string ret = Interop.RendererParameters.RendererParameters_circularAlignment_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + CircularAlignment alignment = CircularAlignment.Begin; + switch(ret) + { + case "begin": { + alignment = CircularAlignment.Begin; + break; + } + case "center": { + alignment = CircularAlignment.Center; + break; + } + case "end": { + alignment = CircularAlignment.End; + break; + } + default : { + break; + } + } + return alignment; + } + } + + /// + /// The default text's color. Default is white. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Vector4 TextColor + { + set + { + Interop.RendererParameters.RendererParameters_textColor_set(swigCPtr, Vector4.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Vector4 ret = new Vector4(Interop.RendererParameters.RendererParameters_textColor_get(swigCPtr), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The font's size (in points). + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public float FontSize + { + set + { + Interop.RendererParameters.RendererParameters_fontSize_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + float ret = Interop.RendererParameters.RendererParameters_fontSize_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The width in pixels of the boundaries where the text is going to be laid-out. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public uint TextWidth + { + set + { + Interop.RendererParameters.RendererParameters_textWidth_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + uint ret = Interop.RendererParameters.RendererParameters_textWidth_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The height in pixels of the boundaries where the text is going to be laid-out. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public uint TextHeight + { + set + { + Interop.RendererParameters.RendererParameters_textHeight_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + uint ret = Interop.RendererParameters.RendererParameters_textHeight_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The radius in pixels of the circular text. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public uint Radius + { + set + { + Interop.RendererParameters.RendererParameters_radius_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + uint ret = Interop.RendererParameters.RendererParameters_radius_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The begin angle in degrees of the text area on the circle. The top of the circle is 0°, the right side 90°, the bottom 180° and the left 270°. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public float BeginAngle + { + set + { + Interop.RendererParameters.RendererParameters_beginAngle_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + float ret = Interop.RendererParameters.RendererParameters_beginAngle_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The increment angle in degrees of the text area on the circle. The @p incrementAngle defines a direction. If positive, the text will be laid out clockwise. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public float IncrementAngle + { + set + { + Interop.RendererParameters.RendererParameters_incrementAngle_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + float ret = Interop.RendererParameters.RendererParameters_incrementAngle_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Whether the ellipsis layout option is enabled. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public bool EllipsisEnabled + { + set + { + Interop.RendererParameters.RendererParameters_ellipsisEnabled_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + bool ret = Interop.RendererParameters.RendererParameters_ellipsisEnabled_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Whether the mark-up processor is enabled. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public bool MarkupEnabled + { + set + { + Interop.RendererParameters.RendererParameters_markupEnabled_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + bool ret = Interop.RendererParameters.RendererParameters_markupEnabled_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Whether a default color has been set. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public bool IsTextColorSet + { + set + { + Interop.RendererParameters.RendererParameters_isTextColorSet_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + bool ret = Interop.RendererParameters.RendererParameters_isTextColorSet_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + } + + /// + /// Class with info of the embedded items layout. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public class EmbeddedItemInfo : Disposable + { + + internal EmbeddedItemInfo(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn) + { + } + + internal static global::System.Runtime.InteropServices.HandleRef getCPtr(EmbeddedItemInfo obj) + { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } + + protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr) + { + Interop.EmbeddedItemInfo.delete_EmbeddedItemInfo(swigCPtr); + } + + /// + /// Construct EmbeddedItemInfo + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public EmbeddedItemInfo() : this(Interop.EmbeddedItemInfo.new_EmbeddedItemInfo__SWIG_0(), true) + { + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + + /// + /// Index to the character within the string. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public uint CharacterIndex + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_characterIndex_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + uint ret = Interop.EmbeddedItemInfo.EmbeddedItemInfo_characterIndex_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Index to the glyph + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public uint GlyphIndex + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_glyphIndex_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + uint ret = Interop.EmbeddedItemInfo.EmbeddedItemInfo_glyphIndex_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The layout position within the buffer (top, left corner). + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Vector2 Position + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_position_set(swigCPtr, Vector2.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Vector2 ret = new Vector2(Interop.EmbeddedItemInfo.EmbeddedItemInfo_position_get(swigCPtr), swigCMemOwn); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The size within the buffer of the embedded item. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Size Size + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_size_set(swigCPtr, Size.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Size ret = new Size(Interop.EmbeddedItemInfo.EmbeddedItemInfo_size_get(swigCPtr), swigCMemOwn); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The rotated size within the buffer of the embedded item. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Size RotatedSize + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_rotatedSize_set(swigCPtr, Size.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Size ret = new Size(Interop.EmbeddedItemInfo.EmbeddedItemInfo_rotatedSize_get(swigCPtr), swigCMemOwn); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Rotation angle of the pixel buffer in degrees. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Degree Angle + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_angle_set(swigCPtr, Degree.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Degree ret = new Degree(Interop.EmbeddedItemInfo.EmbeddedItemInfo_angle_get(swigCPtr), swigCMemOwn); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Whether the color of the image is multiplied by the color of the text. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Tizen.NUI.ColorBlendingMode ColorBlendingMode + { + set + { + Interop.EmbeddedItemInfo.EmbeddedItemInfo_colorBlendingMode_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Tizen.NUI.ColorBlendingMode ret = Interop.EmbeddedItemInfo.EmbeddedItemInfo_colorBlendingMode_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + } + + /// + /// Class with the parameters needed to build a shadow for the given pixel buffer. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public class ShadowParameters : Disposable + { + + internal ShadowParameters(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn) + { + } + + internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ShadowParameters obj) + { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } + + protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr) + { + Interop.ShadowParameters.delete_ShadowParameters(swigCPtr); + } + + /// + /// Construct ShadowParameters + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public ShadowParameters() : this(Interop.ShadowParameters.new_ShadowParameters__SWIG_0(), true) + { + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + + /// + /// The input pixel buffer used to create the shadow. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public PixelBuffer Input + { + set + { + Interop.ShadowParameters.ShadowParameters_input_set(swigCPtr, PixelBuffer.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + PixelBuffer ret = new PixelBuffer(Interop.ShadowParameters.ShadowParameters_input_get(swigCPtr), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The color of the text. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Vector4 TextColor + { + set + { + Interop.ShadowParameters.ShadowParameters_textColor_set(swigCPtr, Vector4.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Vector4 ret = new Vector4(Interop.ShadowParameters.ShadowParameters_textColor_get(swigCPtr), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The color of the shadow. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Vector4 Color + { + set + { + Interop.ShadowParameters.ShadowParameters_color_set(swigCPtr, Vector4.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Vector4 ret = new Vector4(Interop.ShadowParameters.ShadowParameters_color_get(swigCPtr), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// The offset of the shadow. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public Vector2 Offset + { + set + { + Interop.ShadowParameters.ShadowParameters_offset_set(swigCPtr, Vector2.getCPtr(value)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + Vector2 ret = new Vector2(Interop.ShadowParameters.ShadowParameters_offset_get(swigCPtr), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + /// + /// Whether to blend the shadow. + /// + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public bool blendShadow + { + set + { + Interop.ShadowParameters.ShadowParameters_blendShadow_set(swigCPtr, value); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + get + { + bool ret = Interop.ShadowParameters.ShadowParameters_blendShadow_get(swigCPtr); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + } + + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static partial class TextUtils + { + /// + /// Renders text into a pixel buffer. + /// @note: Can process a mark-up string. + /// @note: It does the font selection, RTL reordering, shaping and layouting. + /// @note: The width of the pixel buffer may be different to the given @e textWidth + /// due to some padding pixels added. + /// + /// The text is laid-out for the given size @e (textWidth,textHeight). + /// If the @e multiLineEnabled option is enabled, the text will wrap in lines. + /// If the @e ellipsisEnabled option is enabled, the text will be ellided if + /// there is no more space for new lines. + /// + /// It won't be rendered the parts of the text exceeding the boundaries of + /// the given width and height. + /// + /// If the given @e textHeight is zero, a big enough pixel buffer will be created + /// to render the full text. + /// + /// If the given @e textWidth is zero, the 'natural size' of the text will be + /// used to create the pixel buffer to render the full text. + /// + /// If the radius is not zero, the text will be laid-out following a circular path. + /// In that case the text is laid-out in a single line. + /// + /// If the mark-up string contains embedded items, the @p embeddedItemLayout vector + /// contains the layout info of each embedded item. + /// + /// The text and style options. + /// The layout info of the embedded items + /// A pixel buffer with the text rendered on it. + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static PixelBuffer Render(RendererParameters textParameters, ref EmbeddedItemInfo[] embeddedItemLayout) + { + int count = 0; + int length = 0; + global::System.IntPtr returnItem = IntPtr.Zero; + PixelBuffer ret = new PixelBuffer(Interop.TextUtils.TextUtils_Render(RendererParameters.getCPtr(textParameters), ref returnItem, ref count, ref length), true); + + embeddedItemLayout = new EmbeddedItemInfo[count]; + for(int i=0; i< count; i++) { + IntPtr p = new IntPtr((returnItem.ToInt32() + i * length)); + embeddedItemLayout[i] = new EmbeddedItemInfo(p, false); + } + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + + /// + /// Creates a shadow for the text given in the input pixel buffer. + /// The function returns a RGBA8888 pixel buffer with the text and its shadow rendered on it. + /// + /// The pixel format of the @e input pixel buffer could be an A8 or an RGBA8888. If it's + /// an A8 pixel buffer, it uses the given @e textColor to give color to the text. Otherwise + /// it uses the color of the @e input pixel buffer. + /// + /// The parameters needed to create the text's shadow. + /// A pixel buffer with the text and the shadow rendered on it. + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static PixelBuffer CreateShadow(ShadowParameters shadowParameters) + { + PixelBuffer ret = new PixelBuffer(Interop.TextUtils.TextUtils_CreateShadow(ShadowParameters.getCPtr(shadowParameters)), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + + /// + /// Converts a @p pixelBuffer with pixel format A8 to RGBA8888 using the given @p color. + /// @note Does nothing if the @p pixelBuffer is not A8. + /// + /// The pixel buffer with pixel format A8 + /// The color used to convert to RGBA8888 + /// multiplyByAlpha Whether to multiply the @p color with the alpha value of the @p pixel @p buffer. + /// The pixel buffer converted to RGBA8888. + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static PixelBuffer ConvertToRgba8888(PixelBuffer pixelBuffer, Vector4 color, bool multiplyByAlpha) + { + PixelBuffer ret = new PixelBuffer(Interop.TextUtils.TextUtils_ConvertToRgba8888(PixelBuffer.getCPtr(pixelBuffer), Vector4.getCPtr(color), multiplyByAlpha), true); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + + /// + /// Updates the @p dst pixel buffer with the data from @p src pixel buffer. + /// @note Both pixel buffers must have the same pixel format. Does nothing if both pixel format are different. + /// @note The function does nothing if the @p src pixel buffer doesn't fit into the @p dst pixel buffer. + /// + /// The @p src pixel buffer could be blended with the @p dst pixel buffer if @p blend is set to @e true. + /// + /// The pixel buffer from where the data is read. + /// The pixel buffer where the data is written. + /// The top left corner's X within the destination pixel buffer. + /// The top left corner's y within the destination pixel buffer. + /// Whether to blend the source pixel buffer with the destination pixel buffer as background. + // This will be public opened after ACR done. (Before ACR, need to be hidden as Inhouse API) + [EditorBrowsable(EditorBrowsableState.Never)] + public static void UpdateBuffer(PixelBuffer src, PixelBuffer dst, uint x, uint y, bool blend) + { + Interop.TextUtils.TextUtils_UpdateBuffer(PixelBuffer.getCPtr(src), PixelBuffer.getCPtr(dst), x, y, blend); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + } + +} diff --git a/src/Tizen.NUI/src/public/PixelBuffer.cs b/src/Tizen.NUI/src/public/PixelBuffer.cs index e8e47df..83a3b26 100755 --- a/src/Tizen.NUI/src/public/PixelBuffer.cs +++ b/src/Tizen.NUI/src/public/PixelBuffer.cs @@ -245,26 +245,47 @@ namespace Tizen.NUI if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } - internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PixelBuffer obj) + /// + /// Rotate the buffer by the given angle. + /// + /// The angle in degrees. + /// 8 + /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + public bool Rotate(Degree angle) { - return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + bool ret = Interop.PixelBuffer.PixelBuffer_Rotate(swigCPtr, Degree.getCPtr(angle)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + return ret; } - internal PixelBuffer Assign(PixelBuffer rhs) + /// + /// Gets the pixel buffer + /// + /// 8 + /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + public global::System.IntPtr GetBuffer() { - PixelBuffer ret = new PixelBuffer(Interop.PixelBuffer.PixelBuffer_Assign(swigCPtr, PixelBuffer.getCPtr(rhs)), false); + global::System.IntPtr ret = Interop.PixelBuffer.PixelBuffer_GetBuffer(swigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } - internal SWIGTYPE_p_unsigned_char GetBuffer() + internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PixelBuffer obj) + { + return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; + } + + internal PixelBuffer Assign(PixelBuffer rhs) { - global::System.IntPtr cPtr = Interop.PixelBuffer.PixelBuffer_GetBuffer(swigCPtr); - SWIGTYPE_p_unsigned_char ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_unsigned_char(cPtr, false); + PixelBuffer ret = new PixelBuffer(Interop.PixelBuffer.PixelBuffer_Assign(swigCPtr, PixelBuffer.getCPtr(rhs)), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } + + /// This will not be public opened. [EditorBrowsable(EditorBrowsableState.Never)] protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr) diff --git a/src/Tizen.NUI/src/public/VisualConstants.cs b/src/Tizen.NUI/src/public/VisualConstants.cs index 38adc95..4cc4d00 100755 --- a/src/Tizen.NUI/src/public/VisualConstants.cs +++ b/src/Tizen.NUI/src/public/VisualConstants.cs @@ -887,7 +887,7 @@ namespace Tizen.NUI /// /// @brief The looping mode the AnimatedVectorImageVisual will use. - /// @details Name "loopingMode", Type LoopingMode::Type (Property::INTEGER) + /// @details Name "loopingMode", Type LoopingMode::Type (Property::INTEGER) /// @note Default value is LoopingMode::RESTART. /// /// @@ -1194,4 +1194,67 @@ namespace Tizen.NUI /// The property of optional. The default value is 0 (butt). internal static readonly int Cap = Thickness + 3; } + + /// Enumeration for Circular alignment. + /// The @p horizontalAlignment and @p verticalAlignment can be used to align the text within the text area. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public enum CircularAlignment + { + /// + /// Texts place at the begin of Circular direction. + /// + [Description("BEGIN")] + Begin, + /// + /// Texts place at the center of Circular direction. + /// + [Description("CENTER")] + Center, + /// + /// Texts place at the end of Circular direction. + /// + [Description("END")] + End + } + + /// + /// Enumeration for Text Layout. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public enum TextLayout + { + /// + /// SingleLine. + /// + [Description("singleLine")] + SingleLine, + /// + /// MultiLine. + /// + [Description("multiLine")] + MultiLine, + /// + /// Circular. + /// + [Description("circular")] + Circular + } + + /// + /// Defines how a color is blended. + /// + /// This will be public opened after ACR done. Before ACR, need to be hidden as inhouse API. + [EditorBrowsable(EditorBrowsableState.Never)] + public enum ColorBlendingMode + { + /// + /// No blend. + /// + None, + /// + /// The color is multiplied by another one. + /// + Multiply + }; } diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/CircularTextSample.cs b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/CircularTextSample.cs new file mode 100755 index 0000000..f8f6a42 --- /dev/null +++ b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/Samples/CircularTextSample.cs @@ -0,0 +1,359 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.InteropServices; +using Tizen.NUI; +using Tizen.NUI.BaseComponents; +using Tizen.NUI.Components; + +namespace Tizen.NUI.Samples +{ + public class CircularText : IExample + { + private string VERSION_3_ES = "#version 300 es\n"; + + private static readonly string VERTEX_SHADER = + "precision mediump float;\n"+ + "in vec2 aPosition;\n"+ + "in vec2 aTexCoord;\n"+ + "out vec2 vUV;\n"+ + "uniform vec3 uSize;\n"+ + "uniform mat4 uMvpMatrix;\n"+ + "void main()\n"+ + "{\n"+ + " vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n"+ + " vertexPosition.xyz *= uSize;\n"+ + " gl_Position = uMvpMatrix * vertexPosition;\n"+ + " vUV = aTexCoord;\n"+ + "}\n"; + + private static readonly string FRAGMENT_SHADER = + "precision mediump float;\n"+ + "in vec2 vUV;\n"+ + "out vec4 FragColor;\n"+ + "uniform sampler2D sAlbedo;\n"+ + "uniform vec4 uColor;\n"+ + "void main()\n"+ + "{\n"+ + " vec4 color = texture( sAlbedo, vUV );\n"+ + " FragColor = vec4( color.rgb, uColor.a * color.a );\n"+ + "}\n"; + + public struct Vec2 + { + float x; + float y; + public Vec2(float xIn, float yIn) + { + x = xIn; + y = yIn; + } + } + + private struct TexturedQuadVertex + { + public Vec2 position; + public Vec2 texCoord; + }; + + private Renderer CreateRenderer() + { + TexturedQuadVertex vertex1 = new TexturedQuadVertex(); + TexturedQuadVertex vertex2 = new TexturedQuadVertex(); + TexturedQuadVertex vertex3 = new TexturedQuadVertex(); + TexturedQuadVertex vertex4 = new TexturedQuadVertex(); + vertex1.position = new Vec2(-0.5f, -0.5f); + vertex2.position = new Vec2( 0.5f, -0.5f); + vertex3.position = new Vec2(-0.5f, 0.5f); + vertex4.position = new Vec2( 0.5f, 0.5f); + vertex1.texCoord = new Vec2( 0.0f, 0.0f); + vertex2.texCoord = new Vec2( 1.0f, 0.0f); + vertex3.texCoord = new Vec2( 0.0f, 1.0f); + vertex4.texCoord = new Vec2( 1.0f, 1.0f); + + TexturedQuadVertex[] texturedQuadVertexData = new TexturedQuadVertex[4] { vertex1, vertex2, vertex3, vertex4 }; + + PropertyMap property = new PropertyMap(); + property.Add("aPosition", new PropertyValue((int)PropertyType.Vector2)); + property.Add("aTexCoord", new PropertyValue((int)PropertyType.Vector2)); + PropertyBuffer vertexBuffer = new PropertyBuffer(property); + + const int vertexCount = 4; + unsafe + { + float* pc = (float*)Marshal.UnsafeAddrOfPinnedArrayElement(texturedQuadVertexData, 0); + IntPtr pA = new IntPtr(pc); + vertexBuffer.SetData(pA, vertexCount); + } + + Geometry geometry = new Geometry(); + geometry.AddVertexBuffer(vertexBuffer); + geometry.SetType(Geometry.Type.TRIANGLE_STRIP); + + // Create the shader + Shader shader = new Shader( VERSION_3_ES + VERTEX_SHADER, VERSION_3_ES + FRAGMENT_SHADER ); + + // Create the renderer + Renderer renderer = new Renderer( geometry, shader ); + + return renderer; + } + + private uint GetBytesPerPixel(PixelFormat pixelFormat) + { + switch (pixelFormat) + { + case PixelFormat.L8: + case PixelFormat.A8: + { + return 1; + } + + case PixelFormat.LA88: + case PixelFormat.RGB565: + case PixelFormat.RGBA4444: + case PixelFormat.RGBA5551: + case PixelFormat.BGR565: + case PixelFormat.BGRA4444: + case PixelFormat.BGRA5551: + { + return 2; + } + + case PixelFormat.RGB888: + { + return 3; + } + + case PixelFormat.RGB8888: + case PixelFormat.BGR8888: + case PixelFormat.RGBA8888: + case PixelFormat.BGRA8888: + { + return 4; + } + default: + return 4; + } + return 0; + } + + TextureSet CreateTextureSet( RendererParameters textParameters, List embeddedItems ) + { + EmbeddedItemInfo[] embeddedItemLayout = new EmbeddedItemInfo[0]; + PixelBuffer pixelBuffer = TextUtils.Render( textParameters, ref embeddedItemLayout ); + + uint dstWidth = pixelBuffer.GetWidth(); + uint dstHeight = pixelBuffer.GetHeight(); + + int index = 0; + int length = embeddedItemLayout.Length; + for(int i = 0; i < length; i++) + { + EmbeddedItemInfo itemLayout = embeddedItemLayout[i]; + int width = (int)itemLayout.Size.Width; + int height = (int)itemLayout.Size.Height; + + int x = (int)itemLayout.Position.X; + int y = (int)itemLayout.Position.Y; + + PixelBuffer itemPixelBuffer = ImageLoading.LoadImageFromFile(embeddedItems[index++]); + + if( itemPixelBuffer == null ) continue; + + itemPixelBuffer.Resize( (ushort)width, (ushort)height ); + itemPixelBuffer.Rotate( itemLayout.Angle ); + + + width = (int)itemPixelBuffer.GetWidth(); + height = (int)itemPixelBuffer.GetHeight(); + + PixelFormat itemPixelFormat = itemPixelBuffer.GetPixelFormat(); + + // Check if the item is out of the buffer. + if( ( x + width < 0 ) || + ( x > dstWidth ) || + ( y < 0 ) || + ( y - height > dstHeight ) ) + { + // The embedded item is completely out of the buffer. + continue; + } + + // Crop if it exceeds the boundaries of the destination buffer. + int layoutX = 0; + int layoutY = 0; + int cropX = 0; + int cropY = 0; + int newWidth = width; + int newHeight = height; + + bool crop = false; + + if( 0 > x ) + { + newWidth += x; + cropX = Math.Abs( x ); + crop = true; + } + else + { + layoutX = x; + } + + if( cropX + newWidth > dstWidth ) + { + crop = true; + newWidth -= (int)( ( cropX + newWidth ) - dstWidth ); + } + + layoutY = y; + if( 0 > layoutY ) + { + newHeight += layoutY; + cropY = Math.Abs(layoutY); + crop = true; + } + + if( cropY + newHeight > dstHeight ) + { + crop = true; + newHeight -= (int)( ( cropY + newHeight ) - dstHeight ); + } + + int uiCropX = cropX; + int uiCropY = cropY; + int uiNewWidth = newWidth; + int uiNewHeight = newHeight; + + if( crop ) + { + itemPixelBuffer.Crop( (ushort)uiCropX, (ushort)uiCropY, (ushort)uiNewWidth, (ushort)uiNewHeight ); + } + + // Blend the item pixel buffer with the text's color according its blending mode. + if( ColorBlendingMode.Multiply == itemLayout.ColorBlendingMode ) + { + PixelBuffer buffer = new PixelBuffer( (uint)uiNewWidth, (uint)uiNewHeight, itemPixelFormat ); + + IntPtr bufferIntPtr = buffer.GetBuffer(); + IntPtr itemBufferIntPtr = itemPixelBuffer.GetBuffer(); + + uint bytesPerPixel = GetBytesPerPixel(itemPixelFormat); + uint size = (uint)(uiNewWidth * uiNewHeight * bytesPerPixel); + + + unsafe { + byte *bufferPtr = (byte *)bufferIntPtr.ToPointer(); + byte *itemBufferPtr = (byte *)itemBufferIntPtr.ToPointer(); + + for (uint j = 0; j < size; j += bytesPerPixel) + { + *(bufferPtr + 0) = (byte)( ( *(itemBufferPtr + 0u) ) * textParameters.TextColor.R ); + *(bufferPtr + 1) = (byte)( ( *(itemBufferPtr + 1u) ) * textParameters.TextColor.G ); + *(bufferPtr + 2) = (byte)( ( *(itemBufferPtr + 2u) ) * textParameters.TextColor.B ); + *(bufferPtr + 3) = (byte)( ( *(itemBufferPtr + 3u) ) * textParameters.TextColor.A ); + + itemBufferPtr += bytesPerPixel; + bufferPtr += bytesPerPixel; + } + } + + itemPixelBuffer = buffer; + } + + TextUtils.UpdateBuffer(itemPixelBuffer, pixelBuffer, (uint)layoutX, (uint)layoutY, true); + } + + PixelData pixelData = PixelBuffer.Convert( pixelBuffer ); + + Texture texture = new Texture( TextureType.TEXTURE_2D, + pixelData.GetPixelFormat(), + pixelData.GetWidth(), + pixelData.GetHeight() ); + texture.Upload(pixelData); + + TextureSet textureSet = new TextureSet(); + textureSet.SetTexture( 0u, texture ); + + return textureSet; + + } + + + + private View root; + static string DEMO_IMAGE_DIR = CommonResource.GetDaliResourcePath() + "DaliDemo/"; + static string IMAGE1 = DEMO_IMAGE_DIR + "application-icon-1.png"; + static string IMAGE2 = DEMO_IMAGE_DIR + "application-icon-6.png"; + + public void Activate() + { + Window window = NUIApplication.GetDefaultWindow(); + + root = new View() + { + Size = window.Size, + BackgroundColor = Color.Yellow, + ParentOrigin = ParentOrigin.TopLeft, + PivotPoint = PivotPoint.TopLeft, + PositionUsesPivotPoint = true, + }; + window.Add(root); + + string image1 = ""; + string image2 = ""; + + RendererParameters textParameters = new RendererParameters(); + textParameters.Text = "Hello " + image1 + " world " + image2 + " this " + image1 + " is " + image2 + " a " + image1 + " demo " + image2 + " of " + image1 + " circular " + image2 + " text " + image1 + " width " + image2 + " icons."; + textParameters.HorizontalAlignment = HorizontalAlignment.Center; + textParameters.VerticalAlignment = VerticalAlignment.Center; + textParameters.CircularAlignment = CircularAlignment.Center; + textParameters.FontFamily = "SamsungUI"; + textParameters.FontWeight = ""; + textParameters.FontWidth = ""; + textParameters.FontSlant = ""; + textParameters.Layout = TextLayout.Circular; + textParameters.TextColor = Color.Black; + textParameters.FontSize = 25; + textParameters.TextWidth = 360u; + textParameters.TextHeight = 360u; + textParameters.Radius = 180u; + textParameters.BeginAngle = 15; + textParameters.IncrementAngle = 360; + textParameters.EllipsisEnabled = true; + textParameters.MarkupEnabled = true; + + List embeddedItems = new List(); + embeddedItems.Add(IMAGE2); + embeddedItems.Add(IMAGE2); + embeddedItems.Add(IMAGE2); + embeddedItems.Add(IMAGE2); + embeddedItems.Add(IMAGE2); + + TextureSet textureSet = CreateTextureSet( textParameters, embeddedItems ); + Renderer renderer = CreateRenderer(); + renderer.SetTextures( textureSet ); + + View actor = new View(); + actor.PivotPoint = PivotPoint.TopLeft; + actor.ParentOrigin = ParentOrigin.TopLeft; + actor.Position = new Position(0, 0, 0); + actor.Size = new Size( 360, 360 ); + actor.Color = Color.White; + + actor.AddRenderer( renderer ); + root.Add(actor); + } + + + public void Deactivate() + { + if (root != null) + { + NUIApplication.GetDefaultWindow().Remove(root); + root.Dispose(); + } + } + } +} \ No newline at end of file diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/res/images/Dali/DaliDemo/application-icon-1.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/res/images/Dali/DaliDemo/application-icon-1.png new file mode 100755 index 0000000..2d8ab53 Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/res/images/Dali/DaliDemo/application-icon-1.png differ diff --git a/test/Tizen.NUI.Samples/Tizen.NUI.Samples/res/images/Dali/DaliDemo/application-icon-6.png b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/res/images/Dali/DaliDemo/application-icon-6.png new file mode 100755 index 0000000..1568377 Binary files /dev/null and b/test/Tizen.NUI.Samples/Tizen.NUI.Samples/res/images/Dali/DaliDemo/application-icon-6.png differ