public string ValueLabel(UInt16 settingsno, string langid, Encform utf) { UInt32 length; ushort langId = (ushort)Graphite2Api.StrToTag(langid); IntPtr labelPtr = Graphite2Api.FrefValueLabel(_featureRef, settingsno, ref langId, utf, out length); string retLabel = ConvertGraphiteLabelToString(labelPtr, utf, length); Graphite2Api.LabelDestroy(labelPtr); return retLabel; }
public string ValueLabel(UInt16 settingsno, string langid, Encform utf) { UInt32 length; ushort langId = (ushort)Graphite2Api.StrToTag(langid); IntPtr labelPtr = Graphite2Api.FrefValueLabel(_featureRef, settingsno, ref langId, utf, out length); string retLabel = ConvertGraphiteLabelToString(labelPtr, utf, length); Graphite2Api.LabelDestroy(labelPtr); return(retLabel); }
public string Label(string langid, Encform utf) { UInt32 length; ushort langId = (ushort)Graphite2Api.StrToTag(langid); IntPtr labelPtr = Graphite2Api.FrefLabel(_featureRef, ref langId, utf, out length); if (labelPtr == IntPtr.Zero) return String.Empty; string retLabel = ConvertGraphiteLabelToString(labelPtr, utf, length); Graphite2Api.LabelDestroy(labelPtr); return retLabel; }
public string Label(string langid, Encform utf) { UInt32 length; ushort langId = (ushort)Graphite2Api.StrToTag(langid); IntPtr labelPtr = Graphite2Api.FrefLabel(_featureRef, ref langId, utf, out length); if (labelPtr == IntPtr.Zero) { return(String.Empty); } string retLabel = ConvertGraphiteLabelToString(labelPtr, utf, length); Graphite2Api.LabelDestroy(labelPtr); return(retLabel); }
protected string ConvertGraphiteLabelToString(IntPtr labelPtr, Encform utf, UInt32 length) { switch (utf) { case Encform.Utf8: return(Marshal.PtrToStringAnsi(labelPtr, (int)length)); case Encform.Utf16: return(Marshal.PtrToStringUni(labelPtr, (int)length)); case Encform.utf32: // I am assuming that PtrToStringUni only works for utf-16 throw new NotImplementedException("Getting labels as utf32 not supportted"); default: throw new NotImplementedException("Unknown EncForm"); } }
protected string ConvertGraphiteLabelToString(IntPtr labelPtr, Encform utf, UInt32 length) { switch(utf) { case Encform.Utf8: return Marshal.PtrToStringAnsi(labelPtr, (int)length); case Encform.Utf16: return Marshal.PtrToStringUni(labelPtr, (int)length); case Encform.utf32: // I am assuming that PtrToStringUni only works for utf-16 throw new NotImplementedException("Getting labels as utf32 not supportted"); default: throw new NotImplementedException("Unknown EncForm"); } }
internal static extern /*gr_segment**/ IntPtr MakeSeg(/*gr_font**/ IntPtr font, /*gr_face**/ IntPtr face, UInt32 script, /*gr_feature_val**/ IntPtr pFeats, Encform enc, IntPtr pStart, int nChars, Bidirtl dir);
internal static extern int CountUnicodeCharacters(Encform enc, IntPtr buffer_begin, IntPtr buffer_end, ref IntPtr pError);
internal static extern IntPtr FrefValueLabel(/*gr_feature_ref*/ IntPtr pfeatureref, UInt16 settingsno, ref UInt16 langId, Encform utf, out UInt32 length);
internal static extern IntPtr FrefLabel(/*gr_feature_ref*/ IntPtr pfeatureref, ref UInt16 langid, Encform utf, out UInt32 length);
internal static extern IntPtr MakeSeg(/*gr_font**/IntPtr font, /*gr_face**/IntPtr face, UInt32 script, /*gr_feature_val**/IntPtr pFeats, Encform enc, IntPtr pStart, int nChars, Bidirtl dir);