<OutputPath>$(SolutionDir)build\Release</OutputPath>
</PropertyGroup>
<ItemGroup>
- <Compile Include="src\**\*.cs" Exclude="src\Mono.Cairo\NativeMethods-internal.cs;src\backends\win32\User32\Structs\RawInputDevice.cs" />
+ <Compile Include="src\**\*.cs" Exclude="src\Mono.Cairo\NativeMethods-internal.cs;src\backends\win32\User32\Structs\RawInputDevice.cs;src\vkvg\Point.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Folder Include="src\backends\" />
<Folder Include="src\backends\xlib\" />
<Folder Include="src\backends\xcb\" />
+ <Folder Include="src\vkvg\" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Icons\*.*" />
using System;
using System.IO;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
widthRatio = heightRatio;
}
- using (ImageSurface tmp = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height)) {
- using (Context gr = new Context (tmp)) {
- gr.Translate (bounds.Left, bounds.Top);
- gr.Scale (widthRatio, heightRatio);
- gr.Translate ((bounds.Width/widthRatio - Dimensions.Width)/2, (bounds.Height/heightRatio - Dimensions.Height)/2);
-
- using (ImageSurface imgSurf = new ImageSurface (image, Format.Argb32,
- Dimensions.Width, Dimensions.Height, 4 * Dimensions.Width)) {
- gr.SetSourceSurface (imgSurf, 0,0);
- gr.Paint ();
- }
- }
- ctx.SetSource (tmp);
- }
+ //using (ImageSurface tmp = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height)) {
+ // using (Context gr = new Context (tmp)) {
+ // gr.Translate (bounds.Left, bounds.Top);
+ // gr.Scale (widthRatio, heightRatio);
+ // gr.Translate ((bounds.Width/widthRatio - Dimensions.Width)/2, (bounds.Height/heightRatio - Dimensions.Height)/2);
+
+ // using (ImageSurface imgSurf = new ImageSurface (image, Format.Argb32,
+ // Dimensions.Width, Dimensions.Height, 4 * Dimensions.Width)) {
+ // gr.SetSourceSurface (imgSurf, 0,0);
+ // gr.Paint ();
+ // }
+ // }
+ // ctx.SetSource (tmp);
+ //}
}
#endregion
gr.Scale (widthRatio, heightRatio);
gr.Translate ((rect.Width/widthRatio - Dimensions.Width)/2, (rect.Height/heightRatio - Dimensions.Height)/2);
- using (ImageSurface imgSurf = new ImageSurface (image, Format.Argb32,
- Dimensions.Width, Dimensions.Height, 4 * Dimensions.Width)) {
- gr.SetSourceSurface (imgSurf, 0,0);
- gr.Paint ();
- }
+ //using (Surface imgSurf = new Surface (. image, Format.Argb32,
+ // Dimensions.Width, Dimensions.Height, 4 * Dimensions.Width)) {
+ // gr.SetSourceSurface (imgSurf, 0,0);
+ // gr.Paint ();
+ //}
gr.Restore ();
}
}
+++ /dev/null
-//
-// CairoHelpers.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Crow
-{
- public static class CairoHelpers
- {
- public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>
- {
- if (val.CompareTo(min) < 0) return min;
- else if(val.CompareTo(max) > 0) return max;
- else return val;
- }
- /// <summary>
- /// Convert string to utf8 (extension method)
- /// </summary>
- /// <returns>byte array with utf8 encoding</returns>
- public static byte[] ToUtf8(this String str)
- {
- return System.Text.UTF8Encoding.UTF8.GetBytes (str);
- }
-
- public static double min(params double[] arr)
- {
- int minp = 0;
- for (int i = 1; i < arr.Length; i++)
- if (arr[i] < arr[minp])
- minp = i;
-
- return arr[minp];
- }
- public static void CairoRectangle(Crow.Cairo.Context gr, Rectangle r, double radius, double stroke = 0.0)
- {
- if (radius > 0)
- CairoHelpers.DrawRoundedRectangle (gr, r, radius, stroke);
- else
- gr.Rectangle (r, stroke);
- }
- public static void CairoCircle(Crow.Cairo.Context gr, Rectangle r)
- {
- gr.Arc(r.X + r.Width/2, r.Y + r.Height/2, Math.Min(r.Width,r.Height)/2, 0, 2*Math.PI);
- }
- public static void DrawRoundedRectangle(Crow.Cairo.Context gr, Rectangle r, double radius, double stroke = 0.0)
- {
- if (stroke>0.0) {
- gr.LineWidth = stroke;
- double hsw = stroke / 2.0;
- DrawRoundedRectangle (gr, hsw + r.X, hsw + r.Y, (double)r.Width - stroke, (double)r.Height - stroke, radius);
- gr.Stroke ();
- }else
- DrawRoundedRectangle(gr, r.X, r.Y, r.Width, r.Height, radius);
- }
- public static void DrawRoundedRectangle(Crow.Cairo.Context gr, double x, double y, double width, double height, double radius)
- {
- gr.Save();
-
- if ((radius > height / 2) || (radius > width / 2))
- radius = min(height / 2, width / 2);
-
- gr.MoveTo(x, y + radius);
- gr.Arc(x + radius, y + radius, radius, Math.PI, -Math.PI / 2);
- gr.LineTo(x + width - radius, y);
- gr.Arc(x + width - radius, y + radius, radius, -Math.PI / 2, 0);
- gr.LineTo(x + width, y + height - radius);
- gr.Arc(x + width - radius, y + height - radius, radius, 0, Math.PI / 2);
- gr.LineTo(x + radius, y + height);
- gr.Arc(x + radius, y + height - radius, radius, Math.PI / 2, Math.PI);
- gr.ClosePath();
- gr.Restore();
- }
- public static void StrokeRaisedRectangle(Crow.Cairo.Context gr, Rectangle r, double width = 1)
- {
- gr.Save();
- r.Inflate((int)-width / 2, (int)-width / 2);
- gr.LineWidth = width;
- gr.SetSourceColor(Color.White);
- gr.MoveTo(r.BottomLeft);
- gr.LineTo(r.TopLeft);
- gr.LineTo(r.TopRight);
- gr.Stroke();
-
- gr.SetSourceColor(Color.DarkGrey);
- gr.MoveTo(r.TopRight);
- gr.LineTo(r.BottomRight);
- gr.LineTo(r.BottomLeft);
- gr.Stroke();
-
- gr.Restore();
- }
- public static void StrokeLoweredRectangle(Crow.Cairo.Context gr, Rectangle r, double width = 1)
- {
- gr.Save();
- r.Inflate((int)-width / 2, (int)-width / 2);
- gr.LineWidth = width;
- gr.SetSourceColor(Color.DarkGrey);
- gr.MoveTo(r.BottomLeft);
- gr.LineTo(r.TopLeft);
- gr.LineTo(r.TopRight);
- gr.Stroke();
- gr.SetSourceColor(Color.White);
- gr.MoveTo(r.TopRight);
- gr.LineTo(r.BottomRight);
- gr.LineTo(r.BottomLeft);
- gr.Stroke();
-
- gr.Restore();
- }
- }
-}
--- /dev/null
+//
+// CairoHelpers.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using vkvg;
+
+namespace Crow {
+ public static class DrawingHelpers
+ {
+ public static T Clamp<T>(this T val, T min, T max) where T : IComparable<T>
+ {
+ if (val.CompareTo(min) < 0) return min;
+ else if(val.CompareTo(max) > 0) return max;
+ else return val;
+ }
+ /// <summary>
+ /// Convert string to utf8 (extension method)
+ /// </summary>
+ /// <returns>byte array with utf8 encoding</returns>
+ public static byte[] ToUtf8(this String str)
+ {
+ return System.Text.UTF8Encoding.UTF8.GetBytes (str);
+ }
+
+ public static double min(params double[] arr)
+ {
+ int minp = 0;
+ for (int i = 1; i < arr.Length; i++)
+ if (arr[i] < arr[minp])
+ minp = i;
+
+ return arr[minp];
+ }
+ public static void CairoRectangle(Context gr, Rectangle r, double radius, double stroke = 0.0)
+ {
+ if (radius > 0)
+ DrawRoundedRectangle (gr, r, radius, stroke);
+ else
+ gr.Rectangle (r, stroke);
+ }
+ public static void CairoCircle(Context gr, Rectangle r)
+ {
+ gr.Arc(r.X + r.Width/2, r.Y + r.Height/2, Math.Min(r.Width,r.Height)/2, 0, 2*Math.PI);
+ }
+ public static void DrawRoundedRectangle(Context gr, Rectangle r, double radius, double stroke = 0.0)
+ {
+ if (stroke>0.0) {
+ gr.LineWidth = stroke;
+ double hsw = stroke / 2.0;
+ DrawRoundedRectangle (gr, hsw + r.X, hsw + r.Y, (double)r.Width - stroke, (double)r.Height - stroke, radius);
+ gr.Stroke ();
+ }else
+ DrawRoundedRectangle(gr, r.X, r.Y, r.Width, r.Height, radius);
+ }
+ public static void DrawRoundedRectangle(Context gr, double x, double y, double width, double height, double radius)
+ {
+ gr.Save();
+
+ if ((radius > height / 2) || (radius > width / 2))
+ radius = min(height / 2, width / 2);
+
+ gr.MoveTo(x, y + radius);
+ gr.Arc(x + radius, y + radius, radius, Math.PI, -Math.PI / 2);
+ gr.LineTo(x + width - radius, y);
+ gr.Arc(x + width - radius, y + radius, radius, -Math.PI / 2, 0);
+ gr.LineTo(x + width, y + height - radius);
+ gr.Arc(x + width - radius, y + height - radius, radius, 0, Math.PI / 2);
+ gr.LineTo(x + radius, y + height);
+ gr.Arc(x + radius, y + height - radius, radius, Math.PI / 2, Math.PI);
+ gr.ClosePath();
+ gr.Restore();
+ }
+ public static void StrokeRaisedRectangle(Context gr, Rectangle r, double width = 1)
+ {
+ gr.Save();
+ r.Inflate((int)-width / 2, (int)-width / 2);
+ gr.LineWidth = width;
+ gr.SetSourceColor(Color.White);
+ gr.MoveTo(r.BottomLeft);
+ gr.LineTo(r.TopLeft);
+ gr.LineTo(r.TopRight);
+ gr.Stroke();
+
+ gr.SetSourceColor(Color.DarkGrey);
+ gr.MoveTo(r.TopRight);
+ gr.LineTo(r.BottomRight);
+ gr.LineTo(r.BottomLeft);
+ gr.Stroke();
+
+ gr.Restore();
+ }
+ public static void StrokeLoweredRectangle(Context gr, Rectangle r, double width = 1)
+ {
+ gr.Save();
+ r.Inflate((int)-width / 2, (int)-width / 2);
+ gr.LineWidth = width;
+ gr.SetSourceColor(Color.DarkGrey);
+ gr.MoveTo(r.BottomLeft);
+ gr.LineTo(r.TopLeft);
+ gr.LineTo(r.TopRight);
+ gr.Stroke();
+ gr.SetSourceColor(Color.White);
+ gr.MoveTo(r.TopRight);
+ gr.LineTo(r.BottomRight);
+ gr.LineTo(r.BottomLeft);
+ gr.Stroke();
+
+ gr.Restore();
+ }
+ }
+}
using System;
using System.Linq.Expressions;
+using vkvg;
namespace Crow
{
{
#region Cairo extensions
- public static void Rectangle(this Crow.Cairo.Context ctx, Rectangle r, double stroke = 0.0)
+ public static void Rectangle(this Context ctx, Rectangle r, double stroke = 0.0)
{
if (stroke > 0.0) {
ctx.LineWidth = stroke;
}else
ctx.Rectangle (r.X, r.Y, r.Width, r.Height);
}
- public static double GetLength(this Crow.Cairo.PointD p){
+ public static double GetLength(this Point p){
return Math.Sqrt (Math.Pow (p.X, 2) + Math.Pow (p.Y, 2));
}
- public static Crow.Cairo.PointD GetPerp(this Crow.Cairo.PointD p){
- return new Crow.Cairo.PointD(-p.Y, p.X);
- }
- public static Crow.Cairo.PointD GetNormalized(this Crow.Cairo.PointD p){
- double length = p.GetLength();
- p.X /= length;
- p.Y /= length;
- return p;
- }
- public static Crow.Cairo.PointD Substract(this Crow.Cairo.PointD p1, Crow.Cairo.PointD p2){
- return new Crow.Cairo.PointD(p1.X - p2.X, p1.Y - p2.Y);
- }
- public static Crow.Cairo.PointD Divide(this Crow.Cairo.PointD p1, double d){
- return new Crow.Cairo.PointD(p1.X / d, p1.Y / d);
- }
- public static Crow.Cairo.PointD Add(this Crow.Cairo.PointD p1, Crow.Cairo.PointD p2){
- return new Crow.Cairo.PointD(p1.X + p2.X, p1.Y + p2.Y);
- }
- public static Crow.Cairo.PointD Multiply(this Crow.Cairo.PointD p1, double v){
- return new Crow.Cairo.PointD(p1.X * v, p1.Y * v);
- }
- public static void DrawCote(this Crow.Cairo.Context ctx, Crow.Cairo.PointD p1, Crow.Cairo.PointD p2,
- double stroke = 1.0, bool fill = false, double arrowWidth = 3.0, double arrowLength = 7.0)
- {
- Crow.Cairo.PointD vDir = p2.Substract(p1);
- vDir = vDir.GetNormalized ();
- Crow.Cairo.PointD vPerp = vDir.GetPerp ();
-
- Crow.Cairo.PointD pA0 = p1.Add(vDir.Multiply(arrowLength));
- Crow.Cairo.PointD pA1 = p2.Substract(vDir.Multiply(arrowLength));
-
- Crow.Cairo.PointD vA = vPerp.Multiply (arrowWidth);
-
- ctx.MoveTo (p1);
- ctx.LineTo (pA0.Add (vA));
- if (fill)
- ctx.LineTo (pA0.Substract (vA));
- else
- ctx.MoveTo (pA0.Substract (vA));
+ public static Point GetPerp(this Point p){
+ return new Point(-p.Y, p.X);
+ }
+ //public static Point GetNormalized(this Point p){
+ // double length = p.GetLength();
+ // p.X /= length;
+ // p.Y /= length;
+ // return p;
+ //}
+ //public static Point Substract(this Point p1, Point p2){
+ // return new Point(p1.X - p2.X, p1.Y - p2.Y);
+ //}
+ //public static Point Divide(this Point p1, double d){
+ // return new Point(p1.X / d, p1.Y / d);
+ //}
+ //public static Point Add(this Point p1, Point p2){
+ // return new Point(p1.X + p2.X, p1.Y + p2.Y);
+ //}
+ //public static Point Multiply(this Point p1, double v){
+ // return new Point(p1.X * v, p1.Y * v);
+ //}
+ //public static void DrawCote(this Context ctx, Point p1, Point p2,
+ // double stroke = 1.0, bool fill = false, double arrowWidth = 3.0, double arrowLength = 7.0)
+ //{
+ // Point vDir = p2.Substract(p1);
+ // vDir = vDir.GetNormalized ();
+ // Point vPerp = vDir.GetPerp ();
+
+ // Point pA0 = p1.Add(vDir.Multiply(arrowLength));
+ // Point pA1 = p2.Substract(vDir.Multiply(arrowLength));
+
+ // Point vA = vPerp.Multiply (arrowWidth);
+
+ // ctx.MoveTo (p1);
+ // ctx.LineTo (pA0.Add (vA));
+ // if (fill)
+ // ctx.LineTo (pA0.Substract (vA));
+ // else
+ // ctx.MoveTo (pA0.Substract (vA));
- ctx.LineTo (p1);
-
- ctx.MoveTo (p2);
- ctx.LineTo (pA1.Add (vA));
- if (fill)
- ctx.LineTo (pA1.Substract (vA));
- else
- ctx.MoveTo (pA1.Substract (vA));
- ctx.LineTo (p2);
-
- if (fill)
- ctx.Fill ();
-
- ctx.MoveTo (p1);
- ctx.LineTo (p2);
- ctx.LineWidth = stroke;
- ctx.Stroke ();
- }
- public static void DrawCoteInverse(this Crow.Cairo.Context ctx, Crow.Cairo.PointD p1, Crow.Cairo.PointD p2,
- double stroke = 1.0, bool fill = false, double arrowWidth = 3.0, double arrowLength = 7.0)
- {
- Crow.Cairo.PointD vDir = p2.Substract(p1);
- vDir = vDir.GetNormalized ();
- Crow.Cairo.PointD vPerp = vDir.GetPerp ();
-
- Crow.Cairo.PointD pA0 = p1.Add(vDir.Multiply(arrowLength));
- Crow.Cairo.PointD pA1 = p2.Substract(vDir.Multiply(arrowLength));
-
- Crow.Cairo.PointD vA = vPerp.Multiply (arrowWidth);
-
- ctx.MoveTo (p1.Add (vA));
- ctx.LineTo (pA0);
- ctx.LineTo (p1.Substract (vA));
- if (fill)
- ctx.LineTo (p1.Add (vA));
-
- ctx.MoveTo (p2.Add (vA));
- ctx.LineTo (pA1);
- ctx.LineTo (p2.Substract (vA));
-
- if (fill) {
- ctx.LineTo (p2.Add (vA));
- ctx.Fill ();
- }
-
- ctx.MoveTo (pA0);
- ctx.LineTo (pA1);
- ctx.LineWidth = stroke;
- ctx.Stroke ();
- }
- public static void DrawCoteFixed(this Crow.Cairo.Context ctx, Crow.Cairo.PointD p1, Crow.Cairo.PointD p2,
- double stroke = 1.0, double coteWidth = 3.0)
- {
- Crow.Cairo.PointD vDir = p2.Substract(p1);
- vDir = vDir.GetNormalized ();
- Crow.Cairo.PointD vPerp = vDir.GetPerp ();
- Crow.Cairo.PointD vA = vPerp.Multiply (coteWidth);
-
- ctx.MoveTo (p1.Add (vA));
- ctx.LineTo (p1.Substract (vA));
- ctx.MoveTo (p2.Add (vA));
- ctx.LineTo (p2.Substract (vA));
- ctx.MoveTo (p1);
- ctx.LineTo (p2);
- ctx.LineWidth = stroke;
- ctx.Stroke ();
+ // ctx.LineTo (p1);
+
+ // ctx.MoveTo (p2);
+ // ctx.LineTo (pA1.Add (vA));
+ // if (fill)
+ // ctx.LineTo (pA1.Substract (vA));
+ // else
+ // ctx.MoveTo (pA1.Substract (vA));
+ // ctx.LineTo (p2);
+
+ // if (fill)
+ // ctx.Fill ();
+
+ // ctx.MoveTo (p1);
+ // ctx.LineTo (p2);
+ // ctx.LineWidth = stroke;
+ // ctx.Stroke ();
+ //}
+ //public static void DrawCoteInverse(this Context ctx, Point p1, Point p2,
+ // double stroke = 1.0, bool fill = false, double arrowWidth = 3.0, double arrowLength = 7.0)
+ //{
+ // Point vDir = p2.Substract(p1);
+ // vDir = vDir.GetNormalized ();
+ // Point vPerp = vDir.GetPerp ();
+
+ // Point pA0 = p1.Add(vDir.Multiply(arrowLength));
+ // Point pA1 = p2.Substract(vDir.Multiply(arrowLength));
+
+ // Point vA = vPerp.Multiply (arrowWidth);
+
+ // ctx.MoveTo (p1.Add (vA));
+ // ctx.LineTo (pA0);
+ // ctx.LineTo (p1.Substract (vA));
+ // if (fill)
+ // ctx.LineTo (p1.Add (vA));
+
+ // ctx.MoveTo (p2.Add (vA));
+ // ctx.LineTo (pA1);
+ // ctx.LineTo (p2.Substract (vA));
+
+ // if (fill) {
+ // ctx.LineTo (p2.Add (vA));
+ // ctx.Fill ();
+ // }
+
+ // ctx.MoveTo (pA0);
+ // ctx.LineTo (pA1);
+ // ctx.LineWidth = stroke;
+ // ctx.Stroke ();
+ //}
+ //public static void DrawCoteFixed(this Context ctx, Point p1, Point p2,
+ // double stroke = 1.0, double coteWidth = 3.0)
+ //{
+ // Point vDir = p2.Substract(p1);
+ // vDir = vDir.GetNormalized ();
+ // Point vPerp = vDir.GetPerp ();
+ // Point vA = vPerp.Multiply (coteWidth);
+
+ // ctx.MoveTo (p1.Add (vA));
+ // ctx.LineTo (p1.Substract (vA));
+ // ctx.MoveTo (p2.Add (vA));
+ // ctx.LineTo (p2.Substract (vA));
+ // ctx.MoveTo (p1);
+ // ctx.LineTo (p2);
+ // ctx.LineWidth = stroke;
+ // ctx.Stroke ();
+ //}
+
+ public static void SetSourceColor(this Context ctx, Color c)
+ {
+ ctx.SetSource(c.R,c.G,c.B,c.A);
}
-
- public static void SetSourceColor(this Crow.Cairo.Context ctx, Color c)
+ public static void SetSourceColor(this Context ctx, double r, double g, double b, double a)
{
- ctx.SetSourceRGBA(c.R,c.G,c.B,c.A);
+ ctx.SetSource((float)r,(float)g,(float)g,(float)a);
}
- public static void AddColorStop(this Crow.Cairo.Gradient grad, double offset, Color c)
+ public static void AddColorStop(this Gradient grad, double offset, Color c)
{
grad.AddColorStop (offset, c);
}
using System;
using System.Collections.Generic;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
using System;
using System.Collections.Generic;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
public override void SetAsSource (Context ctx, Rectangle bounds = default(Rectangle))
{
- Crow.Cairo.Gradient grad = null;
- switch (GradientType) {
- case Type.Vertical:
- grad = new Crow.Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Left, bounds.Bottom);
- break;
- case Type.Horizontal:
- grad = new Crow.Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Top);
- break;
- case Type.Oblic:
- grad = new Crow.Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Bottom);
- break;
- case Type.Radial:
- throw new NotImplementedException ();
- }
+ //Gradient grad = null;
+ //switch (GradientType) {
+ //case Type.Vertical:
+ // grad = new LinearGradient (bounds.Left, bounds.Top, bounds.Left, bounds.Bottom);
+ // break;
+ //case Type.Horizontal:
+ // grad = new LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Top);
+ // break;
+ //case Type.Oblic:
+ // grad = new LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Bottom);
+ // break;
+ //case Type.Radial:
+ // throw new NotImplementedException ();
+ //}
- foreach (ColorStop cs in Stops) {
- if (cs == null)
- continue;
- grad.AddColorStop (cs.Offset, cs.Color);
- }
+ //foreach (ColorStop cs in Stops) {
+ // if (cs == null)
+ // continue;
+ // grad.AddColorStop (cs.Offset, cs.Color);
+ //}
- ctx.SetSource (grad);
- grad.Dispose ();
+ //ctx.SetSource (grad);
+ //grad.Dispose ();
}
#endregion
using System.Xml.Serialization;
using System.ComponentModel;
using System.Diagnostics;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
gr.Save ();
if (ClipToClientRect) {
//clip to client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle,Math.Max(0.0, CornerRadius-Margin));
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle,Math.Max(0.0, CornerRadius-Margin));
gr.Clip ();
}
// rBack.Inflate (-BorderWidth / 2);
Background.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
+ DrawingHelpers.CairoRectangle(gr, rBack, CornerRadius);
gr.Fill ();
if (BorderStyle == BorderStyle.Normal) {
if (BorderWidth > 0) {
Foreground.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle (gr, rBack, CornerRadius, BorderWidth);
+ DrawingHelpers.CairoRectangle (gr, rBack, CornerRadius, BorderWidth);
}
} else {
gr.LineWidth = 1.0;
// rBack.Inflate (-BorderWidth / 2);
Background.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle(gr, rBack, CornerRadius);
+ DrawingHelpers.CairoRectangle(gr, rBack, CornerRadius);
gr.Fill ();
double bw = _borderWidth;
else
gr.SetSourceColor (sunkenColor);
- CairoHelpers.CairoRectangle (gr, rBack, crad, bw);
+ DrawingHelpers.CairoRectangle (gr, rBack, crad, bw);
if (BorderStyle == BorderStyle.Sunken)
gr.SetSourceColor (sunkenColor);
rBack.Height -= (int)Math.Round(bw);
}
- CairoHelpers.CairoRectangle (gr, rBack, crad, bw);
+ DrawingHelpers.CairoRectangle (gr, rBack, crad, bw);
}
}
#endregion
using System.Diagnostics;
using System.Xml.Serialization;
-using Crow.Cairo;
+using vkvg;
using System.ComponentModel;
namespace Crow
using System.Linq;
using System.Text;
using System.IO;
+using vkvg;
namespace Crow
{
RegisterForGraphicUpdate ();
}
- protected override void onDraw (Crow.Cairo.Context gr)
+ protected override void onDraw (Context gr)
{
gr.Save ();
Rectangle rBack = new Rectangle (Slot.Size);
Background.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle (gr, rBack, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, rBack, CornerRadius);
gr.Fill ();
if (ClipToClientRect) {
//clip to client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
break;
}
gr.LineWidth = 1;
- gr.SetSourceRGBA (0.4, 0.4, 0.9, 0.4);
+ gr.SetSourceColor (0.4, 0.4, 0.9, 0.4);
gr.FillPreserve ();
- gr.SetSourceRGBA (0.9, 0.9, 1.0, 0.8);
+ gr.SetSourceColor (0.9, 0.9, 1.0, 0.8);
gr.Stroke ();
}
gr.Restore ();
using System.Collections.Generic;
using System.Linq;
using System.Text;
-using Crow.Cairo;
+using vkvg;
using System.Xml.Serialization;
namespace Crow
using System.Collections.Generic;
using System.ComponentModel;
using System.Xml.Serialization;
-using Crow.Cairo;
+using vkvg;
using System.Diagnostics;
using System.Reflection;
using System.Threading;
if (ClipToClientRect) {
//clip to client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
base.onDraw (gr);
if (ClipToClientRect) {
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
using System;
using System.Xml.Serialization;
using System.ComponentModel;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
grad.Stops.Add (new Gradient.ColorStop (1, new Color (1, 0, 0, 1)));
grad.SetAsSource (gr, r);
- CairoHelpers.CairoRectangle (gr, r, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, r, CornerRadius);
gr.Fill();
}
r.Y = mousePos.Y - 2;
}
- CairoHelpers.CairoRectangle (ctx, r, 1);
+ DrawingHelpers.CairoRectangle (ctx, r, 1);
ctx.SetSourceColor (Color.White);
ctx.LineWidth = 1.0;
ctx.Stroke();
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
using System.Xml.Serialization;
using System.ComponentModel;
using System.Diagnostics;
_pic.Paint (gr, ClientRectangle, _svgSub);
if (Opacity<1.0) {
- gr.SetSourceRGBA (0.0, 0.0, 0.0, 1.0-Opacity);
+ gr.SetSourceColor (0.0, 0.0, 0.0, 1.0-Opacity);
gr.Operator = Operator.DestOut;
gr.Rectangle (ClientRectangle);
gr.Fill ();
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
-using Crow.Cairo;
+using vkvg;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
using System.ComponentModel;
if (lines == null)
lines = getLines;
if (!textMeasureIsUpToDate) {
- using (ImageSurface img = new ImageSurface (Format.Argb32, 10, 10)) {
+ using (Surface img = new Surface (IFace.dev, 10, 10)) {
using (Context gr = new Context (img)) {
//Cairo.FontFace cf = gr.GetContextFontFace ();
- gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
- gr.SetFontSize (Font.Size);
- gr.FontOptions = Interface.FontRenderingOptions;
- gr.Antialias = Interface.Antialias;
+ gr.FontFace = Font.Name;
+ gr.FontSize = (uint)Font.Size;
+ //gr.FontOptions = Interface.FontRenderingOptions;
+ //gr.Antialias = Interface.Antialias;
fe = gr.FontExtents;
te = new TextExtents ();
{
base.onDraw (gr);
- gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
- gr.SetFontSize (Font.Size);
- gr.FontOptions = Interface.FontRenderingOptions;
- gr.Antialias = Interface.Antialias;
+ gr.FontFace = Font.Name;
+ gr.FontSize = (uint)Font.Size;
+ //gr.FontOptions = Interface.FontRenderingOptions;
+ //gr.Antialias = Interface.Antialias;
rText = new Rectangle(new Size(
measureRawSize(LayoutingType.Width), measureRawSize(LayoutingType.Height)));
public override void onMouseEnter (object sender, MouseMoveEventArgs e)
{
base.onMouseEnter (sender, e);
- if (Selectable)
- IFace.MouseCursor = MouseCursors.Text;
+ //if (Selectable)
+ //IFace.MouseCursor = MouseCursors.Text;
}
public override void onMouseLeave (object sender, MouseMoveEventArgs e)
{
base.onMouseLeave (sender, e);
- IFace.MouseCursor = MouseCursors.Default;
+ //IFace.MouseCursor = MouseCursors.Default;
}
protected override void onFocused (object sender, EventArgs e)
{
using System;
using System.Xml.Serialization;
using System.ComponentModel;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
if (ClipToClientRect) {
//clip to client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
-using Crow.Cairo;
+using vkvg;
using System.Diagnostics;
using System.Xml.Serialization;
using System.ComponentModel;
rBack.Width = (int)((double)rBack.Width / Maximum * Value);
Foreground.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
+ DrawingHelpers.CairoRectangle(gr,rBack,CornerRadius);
gr.Fill();
}
#endregion
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
using System.Xml.Serialization;
namespace Crow
if (Foreground != null) {//TODO:test if null should be removed
Foreground.SetAsSource (gr, r);
- CairoHelpers.CairoRectangle (gr, r, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, r, CornerRadius);
gr.Fill ();
}
grad.Stops.Add (new Gradient.ColorStop (0, new Color (1, 1, 1, 1)));
grad.Stops.Add (new Gradient.ColorStop (1, new Color (1, 1, 1, 0)));
grad.SetAsSource (gr, r);
- CairoHelpers.CairoRectangle (gr, r, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, r, CornerRadius);
gr.Fill();
grad = new Gradient (Gradient.Type.Vertical);
grad.Stops.Add (new Gradient.ColorStop (0, new Color (0, 0, 0, 0)));
grad.Stops.Add (new Gradient.ColorStop (1, new Color (0, 0, 0, 1)));
grad.SetAsSource (gr, r);
- CairoHelpers.CairoRectangle (gr, r, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, r, CornerRadius);
gr.Fill();
}
using System.Xml.Serialization;
using System.ComponentModel;
using System.Diagnostics;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
Rectangle rBack = new Rectangle (Slot.Size);
Background.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle(gr,rBack, CornerRadius);
+ DrawingHelpers.CairoRectangle(gr,rBack, CornerRadius);
gr.Fill ();
gr.Save ();
if (ClipToClientRect) {
//clip to scrolled client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
using System.Xml.Serialization;
using System.ComponentModel;
using System.Collections;
-using Crow.Cairo;
+using vkvg;
namespace Crow
using System.ComponentModel;
using System.IO;
using System.Text;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
}
protected override int measureRawSize (LayoutingType lt)
{
- if ((lt == LayoutingType.Width && contentSize.Width == 0) || (lt == LayoutingType.Height && contentSize.Height == 0)) {
- if (size != default(Size))
- contentSize = size;
- else
- {
- using (Surface drawing = new ImageSurface(Format.A1, 1, 1))
- {
- using (Context ctx = new Context(drawing))
- {
- executePath(ctx);
- Rectangle r = ctx.StrokeExtents();
- contentSize = new Size(r.Right, r.Bottom);
- }
- }
- }
- }
+ //if ((lt == LayoutingType.Width && contentSize.Width == 0) || (lt == LayoutingType.Height && contentSize.Height == 0)) {
+ // if (size != default(Size))
+ // contentSize = size;
+ // else
+ // {
+ // using (Surface drawing = new Surface(IFace.dev, 1, 1))
+ // {
+ // using (Context ctx = new Context(drawing))
+ // {
+ // executePath(ctx);
+ // Rectangle r = ctx.StrokeExtents();
+ // contentSize = new Size(r.Right, r.Bottom);
+ // }
+ // }
+ // }
+ //}
return lt == LayoutingType.Width ?
contentSize.Width + 2 * Margin: contentSize.Height + 2 * Margin;
}
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
using System.Xml.Serialization;
using System.ComponentModel;
using System.Diagnostics;
}
protected virtual void DrawCursor(Context gr, Rectangle _cursor)
{
- CairoHelpers.CairoRectangle (gr, _cursor, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, _cursor, CornerRadius);
Foreground.SetAsSource(gr, _cursor);
gr.StrokePreserve();
CursorColor.SetAsSource(gr, _cursor);
public override void onMouseEnter (object sender, MouseMoveEventArgs e)
{
base.onMouseEnter (sender, e);
- if ((Parent as GenericStack).Orientation == Orientation.Horizontal)
- IFace.MouseCursor = MouseCursors.H;
- else
- IFace.MouseCursor = MouseCursors.V;
+ //if ((Parent as GenericStack).Orientation == Orientation.Horizontal)
+ // IFace.MouseCursor = MouseCursors.H;
+ //else
+ //IFace.MouseCursor = MouseCursors.V;
}
public override void onMouseLeave (object sender, MouseMoveEventArgs e)
{
using System.Xml.Serialization;
using System.ComponentModel;
using System.Diagnostics;
-using Crow.Cairo;
+using vkvg;
using System.Linq;
namespace Crow
void makeFloating (TabView tv) {
- lock (IFace.UpdateMutex) {
- ImageSurface di = new ImageSurface (Format.Argb32, dis, dis);
- IFace.DragImageHeight = dis;
- IFace.DragImageWidth = dis;
- using (Context ctx = new Context (di)) {
- double div = Math.Max (LastPaintedSlot.Width, LastPaintedSlot.Height);
- double s = (double)dis / div;
- ctx.Scale (s, s);
- if (bmp == null)
- this.onDraw (ctx);
- else {
- if (LastPaintedSlot.Width>LastPaintedSlot.Height)
- ctx.SetSourceSurface (bmp, 0, (LastPaintedSlot.Width-LastPaintedSlot.Height)/2);
- else
- ctx.SetSourceSurface (bmp, (LastPaintedSlot.Height-LastPaintedSlot.Width)/2, 0);
-
- ctx.Paint ();
- }
- }
- IFace.DragImage = di;
- }
- tv.RemoveChild (this);
- savedParent = tv;
+ //lock (IFace.UpdateMutex) {
+ // ImageSurface di = new ImageSurface (Format.Argb32, dis, dis);
+ // IFace.DragImageHeight = dis;
+ // IFace.DragImageWidth = dis;
+ // using (Context ctx = new Context (di)) {
+ // double div = Math.Max (LastPaintedSlot.Width, LastPaintedSlot.Height);
+ // double s = (double)dis / div;
+ // ctx.Scale (s, s);
+ // if (bmp == null)
+ // this.onDraw (ctx);
+ // else {
+ // if (LastPaintedSlot.Width>LastPaintedSlot.Height)
+ // ctx.SetSourceSurface (bmp, 0, (LastPaintedSlot.Width-LastPaintedSlot.Height)/2);
+ // else
+ // ctx.SetSourceSurface (bmp, (LastPaintedSlot.Height-LastPaintedSlot.Width)/2, 0);
+
+ // ctx.Paint ();
+ // }
+ // }
+ // IFace.DragImage = di;
+ //}
+ //tv.RemoveChild (this);
+ //savedParent = tv;
}
public override ILayoutable Parent {
using System;
using System.Xml.Serialization;
using System.ComponentModel;
-using Crow.Cairo;
+using vkvg;
using System.Diagnostics;
using System.Linq;
Rectangle rBack = new Rectangle (Slot.Size);
Background.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle(gr,rBack, CornerRadius);
+ DrawingHelpers.CairoRectangle(gr,rBack, CornerRadius);
gr.Fill ();
gr.Save ();
if (ClipToClientRect) {
//clip to client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
using System.IO;
using System.Xml;
using System.Reflection;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
if (ClipToClientRect) {
//clip to client zone
- CairoHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
+ DrawingHelpers.CairoRectangle (gr, ClientRectangle, CornerRadius);
gr.Clip ();
}
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
{
base.onDraw (gr);
- double radius = 100;
+ //double radius = 100;
- double pi3 = Math.PI / 3.0;
+ //double pi3 = Math.PI / 3.0;
- MeshPattern mp = new MeshPattern ();
+ //MeshPattern mp = new MeshPattern ();
- double x1 = radius,y1 = 0,
- x2 = 0, y2 = 0, x3 = 0, y3 = 0, x4 = 0, y4 = 0,
- xc = radius,yc = radius;
+ //double x1 = radius,y1 = 0,
+ //x2 = 0, y2 = 0, x3 = 0, y3 = 0, x4 = 0, y4 = 0,
+ //xc = radius,yc = radius;
- double dx = Math.Sin (pi3) * radius;
- double dy = Math.Cos (pi3) * radius;
+ //double dx = Math.Sin (pi3) * radius;
+ //double dy = Math.Cos (pi3) * radius;
- mp.BeginPatch ();
- mp.MoveTo (xc, yc);
- mp.LineTo (x1, y1);
- x4 = xc + dx;
- y4 = yc - dy;
- computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
- mp.CurveTo (x2, y2, x3, y3, x4, y4);
+ //mp.BeginPatch ();
+ //mp.MoveTo (xc, yc);
+ //mp.LineTo (x1, y1);
+ //x4 = xc + dx;
+ //y4 = yc - dy;
+ //computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
+ //mp.CurveTo (x2, y2, x3, y3, x4, y4);
- mp.SetCornerColorRGB (0, 1, 1, 1);
- mp.SetCornerColorRGB (1, 1, 0, 0);
- mp.SetCornerColorRGB (2, 1, 1, 0);
+ //mp.SetCornerColorRGB (0, 1, 1, 1);
+ //mp.SetCornerColorRGB (1, 1, 0, 0);
+ //mp.SetCornerColorRGB (2, 1, 1, 0);
- x1 = x4;
- y1 = y4;
- y4 = yc + dy;
+ //x1 = x4;
+ //y1 = y4;
+ //y4 = yc + dy;
- computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
- mp.CurveTo (x2, y2, x3, y3, x4, y4);
+ //computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
+ //mp.CurveTo (x2, y2, x3, y3, x4, y4);
- mp.SetCornerColorRGB (3, 0, 1, 0);
- mp.EndPatch ();
+ //mp.SetCornerColorRGB (3, 0, 1, 0);
+ //mp.EndPatch ();
- x1 = x4;
- y1 = y4;
- x4 = xc;
- y4 = yc * 2.0;
+ //x1 = x4;
+ //y1 = y4;
+ //x4 = xc;
+ //y4 = yc * 2.0;
- mp.BeginPatch ();
- mp.MoveTo (xc, yc);
- mp.LineTo (x1, y1);
- computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
- mp.CurveTo (x2, y2, x3, y3, x4, y4);
+ //mp.BeginPatch ();
+ //mp.MoveTo (xc, yc);
+ //mp.LineTo (x1, y1);
+ //computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
+ //mp.CurveTo (x2, y2, x3, y3, x4, y4);
- mp.SetCornerColorRGB (0, 1, 1, 1);
- mp.SetCornerColorRGB (1, 0, 1, 0);
- mp.SetCornerColorRGB (2, 0, 1, 1);
+ //mp.SetCornerColorRGB (0, 1, 1, 1);
+ //mp.SetCornerColorRGB (1, 0, 1, 0);
+ //mp.SetCornerColorRGB (2, 0, 1, 1);
- x1 = x4;
- y1 = y4;
- x4 = xc-dx;
- y4 = yc+dy;
+ //x1 = x4;
+ //y1 = y4;
+ //x4 = xc-dx;
+ //y4 = yc+dy;
- computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
- mp.CurveTo (x2, y2, x3, y3, x4, y4);
+ //computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
+ //mp.CurveTo (x2, y2, x3, y3, x4, y4);
- mp.SetCornerColorRGB (3, 0, 0, 1);
- mp.EndPatch ();
+ //mp.SetCornerColorRGB (3, 0, 0, 1);
+ //mp.EndPatch ();
- x1 = x4;
- y1 = y4;
- y4 = yc - dy;
+ //x1 = x4;
+ //y1 = y4;
+ //y4 = yc - dy;
- mp.BeginPatch ();
- mp.MoveTo (xc, yc);
- mp.LineTo (x1, y1);
- computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
- mp.CurveTo (x2, y2, x3, y3, x4, y4);
+ //mp.BeginPatch ();
+ //mp.MoveTo (xc, yc);
+ //mp.LineTo (x1, y1);
+ //computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
+ //mp.CurveTo (x2, y2, x3, y3, x4, y4);
- mp.SetCornerColorRGB (0, 1, 1, 1);
- mp.SetCornerColorRGB (1, 0, 0, 1);
- mp.SetCornerColorRGB (2, 1, 0, 1);
+ //mp.SetCornerColorRGB (0, 1, 1, 1);
+ //mp.SetCornerColorRGB (1, 0, 0, 1);
+ //mp.SetCornerColorRGB (2, 1, 0, 1);
- x1 = x4;
- y1 = y4;
- x4 = radius;
- y4 = 0;
+ //x1 = x4;
+ //y1 = y4;
+ //x4 = radius;
+ //y4 = 0;
- computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
- mp.CurveTo (x2, y2, x3, y3, x4, y4);
+ //computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4);
+ //mp.CurveTo (x2, y2, x3, y3, x4, y4);
- mp.SetCornerColorRGB (3, 1, 0, 0);
- mp.EndPatch ();
+ //mp.SetCornerColorRGB (3, 1, 0, 0);
+ //mp.EndPatch ();
- gr.SetSource (mp);
- gr.Paint ();
+ //gr.SetSource (mp);
+ //gr.Paint ();
}
}
}
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Linq;
using System.Text;
using System.Diagnostics;
-using Crow.Cairo;
+using vkvg;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
using System.ComponentModel;
if (lines == null)
lines = getLines;
- using (ImageSurface img = new ImageSurface (Format.Argb32, 10, 10)) {
+ using (Surface img = new Surface (IFace.dev, 10, 10)) {
using (Context gr = new Context (img)) {
//Cairo.FontFace cf = gr.GetContextFontFace ();
- gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
- gr.SetFontSize (Font.Size);
+ gr.FontFace = Font.Name;
+ gr.FontSize = (uint)Font.Size;
fe = gr.FontExtents;
{
base.onDraw (gr);
- gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
- gr.SetFontSize (Font.Size);
- gr.FontOptions = Interface.FontRenderingOptions;
- gr.Antialias = Interface.Antialias;
+ //gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight);
+ //gr.SetFontSize (Font.Size);
+ //gr.FontOptions = Interface.FontRenderingOptions;
+ //gr.Antialias = Interface.Antialias;
rText = new Rectangle (new Size (
measureRawSize (LayoutingType.Width), measureRawSize (LayoutingType.Height)));
}
}
- gr.FontMatrix = new Matrix (widthRatio * Font.Size, 0, 0, heightRatio * Font.Size, 0, 0);
+ //gr.FontMatrix = new Matrix (widthRatio * Font.Size, 0, 0, heightRatio * Font.Size, 0, 0);
int curLineCount = 0;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.ComponentModel;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
{
base.onDraw (gr);
- if (values.Count == 0)
- return;
- Rectangle r = ClientRectangle;
+// if (values.Count == 0)
+// return;
+// Rectangle r = ClientRectangle;
- int i = values.Count -1;
+// int i = values.Count -1;
- double ptrX = (double)r.Right;
- double scaleY = (double)r.Height / (Maximum - Minimum);
- double stepX = (double)r.Width / (double)(nbValues-1);
+// double ptrX = (double)r.Right;
+// double scaleY = (double)r.Height / (Maximum - Minimum);
+// double stepX = (double)r.Width / (double)(nbValues-1);
- gr.LineWidth = 1.0;
- gr.SetDash (new double[]{ 1.0 },0.0);
+// gr.LineWidth = 1.0;
+// gr.SetDash (new double[]{ 1.0 },0.0);
- LowThresholdFill.SetAsSource (gr);
- gr.MoveTo (r.Left, r.Bottom - LowThreshold * scaleY);
- gr.LineTo (r.Right, r.Bottom - LowThreshold * scaleY);
-// gr.Rectangle (r.Left, r.Bottom - LowThreshold * scaleY, r.Width, LowThreshold * scaleY);
- gr.Stroke();
+// LowThresholdFill.SetAsSource (gr);
+// gr.MoveTo (r.Left, r.Bottom - LowThreshold * scaleY);
+// gr.LineTo (r.Right, r.Bottom - LowThreshold * scaleY);
+//// gr.Rectangle (r.Left, r.Bottom - LowThreshold * scaleY, r.Width, LowThreshold * scaleY);
+// gr.Stroke();
- HighThresholdFill.SetAsSource (gr);
- gr.MoveTo (r.Left, (Maximum - HighThreshold) * scaleY);
- gr.LineTo (r.Right, (Maximum - HighThreshold) * scaleY);
-// gr.Rectangle (r.Left, r.Top, r.Width, (Maximum - HighThreshold) * scaleY);
- gr.Stroke();
+// HighThresholdFill.SetAsSource (gr);
+// gr.MoveTo (r.Left, (Maximum - HighThreshold) * scaleY);
+// gr.LineTo (r.Right, (Maximum - HighThreshold) * scaleY);
+//// gr.Rectangle (r.Left, r.Top, r.Width, (Maximum - HighThreshold) * scaleY);
+ //gr.Stroke();
- gr.MoveTo (ptrX, values [i] * scaleY);
+ //gr.MoveTo (ptrX, values [i] * scaleY);
- Foreground.SetAsSource (gr);
- gr.SetDash (new double[]{ }, 0.0);
+ //Foreground.SetAsSource (gr);
+ //gr.SetDash (new double[]{ }, 0.0);
- while (i >= 0) {
- gr.LineTo (ptrX, r.Bottom - values [i] * scaleY);
- ptrX -= stepX;
- i--;
- }
- gr.Stroke ();
+ //while (i >= 0) {
+ // gr.LineTo (ptrX, r.Bottom - values [i] * scaleY);
+ // ptrX -= stepX;
+ // i--;
+ //}
+ //gr.Stroke ();
}
}
}
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
-using Crow.Cairo;
+using vkvg;
using System.Diagnostics;
using Crow.IML;
using System.Threading;
parentElem.AppendChild (xe);
}
public Surface CreateIcon (int dragIconSize = 32) {
- ImageSurface di = new ImageSurface (Format.Argb32, dragIconSize, dragIconSize);
- using (Context ctx = new Context (di)) {
- double div = Math.Max (LastPaintedSlot.Width, LastPaintedSlot.Height);
- double s = (double)dragIconSize / div;
- ctx.Scale (s, s);
- if (bmp == null)
- this.onDraw (ctx);
- else {
- if (LastPaintedSlot.Width>LastPaintedSlot.Height)
- ctx.SetSourceSurface (bmp, 0, (LastPaintedSlot.Width-LastPaintedSlot.Height)/2);
- else
- ctx.SetSourceSurface (bmp, (LastPaintedSlot.Height-LastPaintedSlot.Width)/2, 0);
- ctx.Paint ();
- }
- }
+ Surface di = null; //new ImageSurface (Format.Argb32, dragIconSize, dragIconSize);
+ //using (Context ctx = new Context (di)) {
+ // double div = Math.Max (LastPaintedSlot.Width, LastPaintedSlot.Height);
+ // double s = (double)dragIconSize / div;
+ // ctx.Scale (s, s);
+ // if (bmp == null)
+ // this.onDraw (ctx);
+ // else {
+ // if (LastPaintedSlot.Width>LastPaintedSlot.Height)
+ // ctx.SetSourceSurface (bmp, 0, (LastPaintedSlot.Width-LastPaintedSlot.Height)/2);
+ // else
+ // ctx.SetSourceSurface (bmp, (LastPaintedSlot.Height-LastPaintedSlot.Width)/2, 0);
+ // ctx.Paint ();
+ // }
+ //}
return di;
}
public string DesignName {
/// If enabled, resulting bitmap of graphic object is cached
/// speeding up rendering of complex object. Default is enabled.
/// </summary>
- [DesignCategory ("Behavior")][DefaultValue(true)]
+ [DesignCategory ("Behavior")][DefaultValue(false)]
public virtual bool CacheEnabled {
get { return cacheEnabled; }
set {
Rectangle rBack = new Rectangle (Slot.Size);
background.SetAsSource (gr, rBack);
- CairoHelpers.CairoRectangle (gr, rBack, cornerRadius);
+ DrawingHelpers.CairoRectangle (gr, rBack, cornerRadius);
gr.Fill ();
#if DEBUG_LOG
bmp.SetSize (Slot.Width, Slot.Height);*/
bmp?.Dispose ();
//bmp = IFace.surf.CreateSimilar (Content.ColorAlpha, Slot.Width, Slot.Height);
- bmp = new ImageSurface(Format.Argb32, Slot.Width, Slot.Height);
+ bmp = new Surface(IFace.dev, Slot.Width, Slot.Height);
using (Context gr = new Context (bmp)) {
- gr.Antialias = Interface.Antialias;
+ //gr.Antialias = Interface.Antialias;
onDraw (gr);
}
}
void paintDisabled(Context gr, Rectangle rb){
gr.Operator = Operator.Xor;
- gr.SetSourceRGBA (0.6, 0.6, 0.6, 0.3);
+ gr.SetSourceColor (0.6, 0.6, 0.6, 0.3);
gr.Rectangle (rb);
gr.Fill ();
gr.Operator = Operator.Over;
if (!hoverBorder) {
currentDirection = Direction.None;
- IFace.MouseCursor = MouseCursors.Default;
+ //IFace.MouseCursor = MouseCursors.Default;
return;
}
else
currentDirection = Direction.None;
- if (currentDirection != lastDir) {
- switch (currentDirection) {
- case Direction.None:
- otkgw.MouseCursor = MouseCursors.Default;
- break;
- case Direction.N:
- otkgw.MouseCursor = MouseCursors.V;
- break;
- case Direction.S:
- otkgw.MouseCursor = MouseCursors.V;
- break;
- case Direction.E:
- otkgw.MouseCursor = MouseCursors.H;
- break;
- case Direction.W:
- otkgw.MouseCursor = MouseCursors.H;
- break;
- case Direction.NW:
- otkgw.MouseCursor = MouseCursors.NW;
- break;
- case Direction.NE:
- otkgw.MouseCursor = MouseCursors.NE;
- break;
- case Direction.SW:
- otkgw.MouseCursor = MouseCursors.SW;
- break;
- case Direction.SE:
- otkgw.MouseCursor = MouseCursors.SE;
- break;
- }
- }
+ //if (currentDirection != lastDir) {
+ // switch (currentDirection) {
+ // case Direction.None:
+ // otkgw.MouseCursor = MouseCursors.Default;
+ // break;
+ // case Direction.N:
+ // otkgw.MouseCursor = MouseCursors.V;
+ // break;
+ // case Direction.S:
+ // otkgw.MouseCursor = MouseCursors.V;
+ // break;
+ // case Direction.E:
+ // otkgw.MouseCursor = MouseCursors.H;
+ // break;
+ // case Direction.W:
+ // otkgw.MouseCursor = MouseCursors.H;
+ // break;
+ // case Direction.NW:
+ // otkgw.MouseCursor = MouseCursors.NW;
+ // break;
+ // case Direction.NE:
+ // otkgw.MouseCursor = MouseCursors.NE;
+ // break;
+ // case Direction.SW:
+ // otkgw.MouseCursor = MouseCursors.SW;
+ // break;
+ // case Direction.SE:
+ // otkgw.MouseCursor = MouseCursors.SE;
+ // break;
+ // }
+ //}
}
}
public override void onMouseDown (object sender, MouseButtonEventArgs e)
{
hoverBorder = false;
currentDirection = Direction.None;
- IFace.MouseCursor = MouseCursors.Default;
+ //IFace.MouseCursor = MouseCursors.Default;
}
protected virtual void onBorderMouseEnter (object sender, MouseMoveEventArgs e)
{
protected void butQuitPress (object sender, MouseButtonEventArgs e)
{
- IFace.MouseCursor = MouseCursors.Default;
+ //IFace.MouseCursor = MouseCursors.Default;
close ();
}
using System.Linq;
using System.Reflection;
using System.Threading;
-using Crow.Cairo;
+using vkvg;
using Crow.IML;
}
}
- FontRenderingOptions = new FontOptions ();
- FontRenderingOptions.Antialias = Antialias.Subpixel;
- FontRenderingOptions.HintMetrics = HintMetrics.On;
- FontRenderingOptions.HintStyle = HintStyle.Full;
- FontRenderingOptions.SubpixelOrder = SubpixelOrder.Default;
+ //FontRenderingOptions = new FontOptions ();
+ //FontRenderingOptions.Antialias = Antialias.Subpixel;
+ //FontRenderingOptions.HintMetrics = HintMetrics.On;
+ //FontRenderingOptions.HintStyle = HintStyle.Full;
+ //FontRenderingOptions.SubpixelOrder = SubpixelOrder.Default;
}
- public Interface(int width=800, int height=600){
+ public Interface(vkvg.Device dev, int width=800, int height=600){
+ this.dev = dev;
clientRectangle = new Rectangle (0, 0, width, height);
}
#endregion
+ public vkvg.Device dev;
+ public vkvg.Surface surf;
+
protected bool running;
public void Run () {
{
// TODO: dispose managed state (managed objects).
}
-
+ surf?.Dispose ();
disposedValue = true;
/// will not be rendered on screen </summary>
public const int MaxDiscardCount = 5;
/// <summary> Global font rendering settings for Cairo </summary>
- public static FontOptions FontRenderingOptions;
+ //public static FontOptions FontRenderingOptions;
/// <summary> Global font rendering settings for Cairo </summary>
- public static Antialias Antialias = Antialias.Subpixel;
+ //public static Antialias Antialias = Antialias.Subpixel;
/// <summary>
/// Each control need a ref to the root interface containing it, if not set in GraphicObject.currentInterface,
#endregion
- /// <summary>Main Cairo surface</summary>
- public Surface surf;
-
#region Public Fields
/// <summary>Graphic Tree of this interface</summary>
public List<Widget> GraphicTree = new List<Widget>();
/// <summary>Interface's resulting bitmap</summary>
- public byte[] bmp;
+ //public byte[] bmp;
/// <summary>resulting bitmap limited to last redrawn part</summary>
- public byte[] dirtyBmp;
+ //public byte[] dirtyBmp;
/// <summary>True when host has to repaint Interface</summary>
public bool IsDirty;
/// <summary>Coordinate of the dirty bmp on the original bmp</summary>
#endif
if (DragImage != null)
clipping.AddRectangle(new Rectangle (DragImageX, DragImageY, DragImageWidth, DragImageHeight));
- using (surf = new ImageSurface (bmp, Format.Argb32, ClientRectangle.Width, ClientRectangle.Height, ClientRectangle.Width * 4)) {
- using (ctx = new Context (surf)) {
- if (!clipping.IsEmpty) {
- IsDirty = true;
-
- clipping.clearAndClip (ctx);
-
- for (int i = GraphicTree.Count - 1; i >= 0; i--) {
- Widget p = GraphicTree[i];
- if (!p.Visible)
- continue;
- if (!clipping.intersect (p.Slot))
- continue;
-
- ctx.Save ();
- p.Paint (ref ctx);
- ctx.Restore ();
- }
- if (DragAndDropOperation != null) {
- if (DragImage != null) {
- DirtyRect += new Rectangle (DragImageX, DragImageY, DragImageWidth, DragImageHeight);
- DragImageX = Mouse.X - DragImageWidth / 2;
- DragImageY = Mouse.Y - DragImageHeight / 2;
- ctx.Save ();
- ctx.ResetClip ();
- ctx.SetSourceSurface (DragImage, DragImageX, DragImageY);
- ctx.PaintWithAlpha (0.8);
- ctx.Restore ();
- DirtyRect += new Rectangle (DragImageX, DragImageY, DragImageWidth, DragImageHeight);
- IsDirty = true;
- //Console.WriteLine ("dragimage drawn: {0},{1}", DragImageX, DragImageY);
- }
- }
+ using (ctx = new Context (surf)) {
+ if (!clipping.IsEmpty) {
+ IsDirty = true;
+
+ clipping.clear (ctx);
+
+ for (int i = GraphicTree.Count - 1; i >= 0; i--) {
+ Widget p = GraphicTree[i];
+ if (!p.Visible)
+ continue;
+ if (!clipping.intersect (p.Slot))
+ continue;
+
+ ctx.Save ();
+ p.Paint (ref ctx);
+ ctx.Restore ();
+ }
+
+ //if (DragAndDropOperation != null) {
+ // if (DragImage != null) {
+ // DirtyRect += new Rectangle (DragImageX, DragImageY, DragImageWidth, DragImageHeight);
+ // DragImageX = Mouse.X - DragImageWidth / 2;
+ // DragImageY = Mouse.Y - DragImageHeight / 2;
+ // ctx.Save ();
+ // ctx.ResetClip ();
+ // ctx.SetSourceSurface (DragImage, DragImageX, DragImageY);
+ // ctx.PaintWithAlpha (0.8);
+ // ctx.Restore ();
+ // DirtyRect += new Rectangle (DragImageX, DragImageY, DragImageWidth, DragImageHeight);
+ // IsDirty = true;
+ // //Console.WriteLine ("dragimage drawn: {0},{1}", DragImageX, DragImageY);
+ // }
+ //}
#if DEBUG_CLIP_RECTANGLE
- ctx.LineWidth = 1;
- clipping.stroke (ctx, Color.Magenta.AdjustAlpha (0.5));
- ctx.Stroke ();
+ ctx.LineWidth = 1;
+ clipping.stroke (ctx, Color.Magenta.AdjustAlpha (0.5));
+ ctx.Stroke ();
#endif
- clipping.Reset ();
- //}
- //surf.WriteToPng (@"/mnt/data/test.png");
-
- }
+ clipping.Reset ();
+ //}
+ //surf.WriteToPng (@"/mnt/data/test.png");
+
}
}
+
/*#if DEBUG_LOG
DebugLog.AddEvent (DbgEvtType.IFaceEndDrawing);
#endif*/
public virtual void ProcessResize(Rectangle bounds){
lock (UpdateMutex) {
clientRectangle = bounds;
-
- int stride = 4 * ClientRectangle.Width;
- int bmpSize = Math.Abs (stride) * ClientRectangle.Height;
- bmp = new byte[bmpSize];
+ surf?.Dispose ();
+ surf = new Surface (dev, ClientRectangle.Width, ClientRectangle.Height);
foreach (Widget g in GraphicTree)
g.RegisterForLayouting (LayoutingType.All);
int mouseRepeatCount;
MouseButtonEventArgs lastMouseDownEvent;
- public MouseCursors MouseCursor {
- set {
- //backend.SetCursor (value);
- }
- }
+ //public MouseCursors MouseCursor {
+ // set {
+ // //backend.SetCursor (value);
+ // }
+ //}
/// <summary>Processes mouse move events from the root container, this function
/// should be called by the host on mouse move event to forward events to crow interfaces</summary>
/// <returns>true if mouse is in the interface</returns>
+++ /dev/null
-//
-// Mono.Cairo.Antialias.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum Antialias
- {
- Default,
- None,
- Grey,
- Subpixel,
- }
-}
+++ /dev/null
-//
-// Cairo.cs - a simplistic binding of the Cairo API to C#.
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// John Luke (john.luke@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2005 John Luke
-// Copyright (C) 2006 Alp Toker
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo
-{
- public static class CairoAPI {
- static public int Version {
- get {
- return Crow.Cairo.NativeMethods.cairo_version ();
- }
- }
-
- static public string VersionString {
- get {
- IntPtr x = Crow.Cairo.NativeMethods.cairo_version_string ();
- return Marshal.PtrToStringAnsi (x);
- }
- }
- }
-}
+++ /dev/null
-//
-// CairoDebug.cs
-//
-// Author:
-// Michael Hutchinson (mhutch@xamarin.com)
-//
-// Copyright (C) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- static class CairoDebug
- {
- static System.Collections.Generic.Dictionary<IntPtr,string> traces;
-
- public static readonly bool Enabled;
-
- static CairoDebug ()
- {
- var dbg = Environment.GetEnvironmentVariable ("MONO_CAIRO_DEBUG_DISPOSE");
- if (dbg == null)
- return;
- Enabled = true;
- traces = new System.Collections.Generic.Dictionary<IntPtr,string> ();
- }
-
- public static void OnAllocated (IntPtr obj)
- {
- if (!Enabled)
- throw new InvalidOperationException ();
-
- traces[obj] = Environment.StackTrace;
- }
-
- public static void OnDisposed<T> (IntPtr obj, bool disposing)
- {
- if (disposing && !Enabled)
- throw new InvalidOperationException ();
-
- if (Environment.HasShutdownStarted)
- return;
-
- if (!disposing) {
- Console.Error.WriteLine ("{0} is leaking, programmer is missing a call to Dispose", typeof(T).FullName);
- if (Enabled) {
- string val;
- if (traces.TryGetValue (obj, out val)) {
- Console.Error.WriteLine ("Allocated from:");
- Console.Error.WriteLine (val);
- }
- } else {
- Console.Error.WriteLine ("Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces");
- }
- }
-
- if (Enabled)
- traces.Remove (obj);
- }
- }
-
-}
+++ /dev/null
-//
-// Mono.Cairo.Content.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
- //[Flags]
-
- public enum Content
- {
- Color = 0x1000,
- Alpha = 0x2000,
- ColorAlpha = 0x3000,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Context.cs
-//
-// Author:
-// Duncan Mak (duncan@ximian.com)
-// Miguel de Icaza (miguel@novell.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell Inc, 2003.
-//
-// This is an OO wrapper API for the Cairo API.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Text;
-using Color = Crow.Color;
-
-namespace Crow.Cairo {
-
- [Obsolete ("Renamed Cairo.Context per suggestion from cairo binding guidelines.")]
- public class Graphics : Context {
- public Graphics (IntPtr state) : base (state) {}
- public Graphics (Surface surface) : base (surface) {}
- }
-
- public class Context : IDisposable
- {
- IntPtr handle = IntPtr.Zero;
-
- static int native_glyph_size, c_compiler_long_size;
-
- static Context ()
- {
- //
- // This is used to determine what kind of structure
- // we should use to marshal Glyphs, as the public
- // definition in Cairo uses `long', which can be
- // 32 bits or 64 bits depending on the platform.
- //
- // We assume that sizeof(long) == sizeof(void*)
- // except in the case of Win64 where sizeof(long)
- // is 32 bits
- //
- int ptr_size = Marshal.SizeOf (typeof (IntPtr));
-
- /*PlatformID platform = Environment.OSVersion.Platform;
- RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
- RuntimeInformation.OSArchitecture.HasFlag(Architecture.);
- if (platform == PlatformID.Win32NT ||
- platform == PlatformID.Win32S ||
- platform == PlatformID.Win32Windows ||
- platform == PlatformID.WinCE ||
- ptr_size == 4){
- c_compiler_long_size = 4;
- native_glyph_size = Marshal.SizeOf (typeof (NativeGlyph_4byte_longs));
- } else {*/
- c_compiler_long_size = 8;
- native_glyph_size = Marshal.SizeOf (typeof (Glyph));
- //}
- }
-
- public Context (Surface surface) : this (NativeMethods.cairo_create (surface.Handle), true)
- {
- }
-
-
- public Context (IntPtr handle, bool owner)
- {
- this.handle = handle;
- if (!owner)
- NativeMethods.cairo_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- [Obsolete]
- public Context (IntPtr state) : this (state, true)
- {
- }
-
- ~Context ()
- {
- Dispose (false);
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<Context> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_destroy (handle);
- handle = IntPtr.Zero;
-
- }
-
- public void Save ()
- {
- NativeMethods.cairo_save (handle);
- }
-
- public void Restore ()
- {
- NativeMethods.cairo_restore (handle);
- }
-
- public Antialias Antialias {
- get { return NativeMethods.cairo_get_antialias (handle); }
- set { NativeMethods.cairo_set_antialias (handle, value); }
- }
-
- public Crow.Cairo.Status Status {
- get {
- return NativeMethods.cairo_status (handle);
- }
- }
-
- public IntPtr Handle {
- get {
- return handle;
- }
- }
-
- public Operator Operator {
- set {
- NativeMethods.cairo_set_operator (handle, value);
- }
-
- get {
- return NativeMethods.cairo_get_operator (handle);
- }
- }
-
- public double Tolerance {
- get {
- return NativeMethods.cairo_get_tolerance (handle);
- }
-
- set {
- NativeMethods.cairo_set_tolerance (handle, value);
- }
- }
-
- public Crow.Cairo.FillRule FillRule {
- set {
- NativeMethods.cairo_set_fill_rule (handle, value);
- }
-
- get {
- return NativeMethods.cairo_get_fill_rule (handle);
- }
- }
-
- public double LineWidth {
- set {
- NativeMethods.cairo_set_line_width (handle, value);
- }
-
- get {
- return NativeMethods.cairo_get_line_width (handle);
- }
- }
-
- public Crow.Cairo.LineCap LineCap {
- set {
- NativeMethods.cairo_set_line_cap (handle, value);
- }
-
- get {
- return NativeMethods.cairo_get_line_cap (handle);
- }
- }
-
- public Crow.Cairo.LineJoin LineJoin {
- set {
- NativeMethods.cairo_set_line_join (handle, value);
- }
-
- get {
- return NativeMethods.cairo_get_line_join (handle);
- }
- }
-
- public void SetDash (double [] dashes, double offset)
- {
- NativeMethods.cairo_set_dash (handle, dashes, dashes.Length, offset);
- }
-
- [Obsolete("Use GetSource/SetSource")]
- public Pattern Pattern {
- set {
- SetSource (value);
- }
- get {
- return GetSource ();
- }
- }
-
- //This is obsolete because it wasn't obvious it needed to be disposed
- [Obsolete("Use GetSource/SetSource")]
- public Pattern Source {
- set {
- SetSource (value);
- }
- get {
- return GetSource ();
- }
- }
-
- public void SetSource (Pattern source)
- {
- NativeMethods.cairo_set_source (handle, source.Handle);
- }
-
- public Pattern GetSource ()
- {
- var ptr = NativeMethods.cairo_get_source (handle);
- return Crow.Cairo.Pattern.Lookup (ptr, false);
- }
-
- public double MiterLimit {
- set {
- NativeMethods.cairo_set_miter_limit (handle, value);
- }
-
- get {
- return NativeMethods.cairo_get_miter_limit (handle);
- }
- }
-
- public PointD CurrentPoint {
- get {
- double x, y;
- NativeMethods.cairo_get_current_point (handle, out x, out y);
- return new PointD (x, y);
- }
- }
-
- public bool HasCurrentPoint {
- get {
- return NativeMethods.cairo_has_current_point (handle);
- }
- }
-
- [Obsolete ("Use GetTarget/SetTarget")]
- public Crow.Cairo.Surface Target {
- set {
- if (handle != IntPtr.Zero)
- NativeMethods.cairo_destroy (handle);
-
- handle = NativeMethods.cairo_create (value.Handle);
- }
-
- get {
- return GetTarget ();
- }
- }
-
- public Surface GetTarget ()
- {
- return Surface.Lookup (NativeMethods.cairo_get_target (handle), false);
- }
-
- public void SetTarget (Surface target)
- {
- if (handle != IntPtr.Zero)
- NativeMethods.cairo_destroy (handle);
- handle = NativeMethods.cairo_create (target.Handle);
- }
-
- [Obsolete("Use GetScaledFont/SetScaledFont")]
- public ScaledFont ScaledFont {
- set {
- SetScaledFont (value);
- }
-
- get {
- return GetScaledFont ();
- }
- }
-
- public ScaledFont GetScaledFont ()
- {
- return new ScaledFont (NativeMethods.cairo_get_scaled_font (handle), false);
- }
-
- public void SetScaledFont (ScaledFont font)
- {
- NativeMethods.cairo_set_scaled_font (handle, font.Handle);
- }
-
- public uint ReferenceCount {
- get { return NativeMethods.cairo_get_reference_count (handle); }
- }
-
- public void SetSourceColor (Color color)
- {
- NativeMethods.cairo_set_source_rgba (handle, color.R, color.G, color.B, color.A);
- }
-
- public void SetSourceRGB (double r, double g, double b)
- {
- NativeMethods.cairo_set_source_rgb (handle, r, g, b);
- }
-
- public void SetSourceRGBA (double r, double g, double b, double a)
- {
- NativeMethods.cairo_set_source_rgba (handle, r, g, b, a);
- }
-
- //[Obsolete ("Use SetSource method (with double parameters)")]
- public void SetSourceSurface (Surface source, int x, int y)
- {
- NativeMethods.cairo_set_source_surface (handle, source.Handle, x, y);
- }
-
- public void SetSource (Surface source, double x, double y)
- {
- NativeMethods.cairo_set_source_surface (handle, source.Handle, x, y);
- }
-
- public void SetSource (Surface source)
- {
- NativeMethods.cairo_set_source_surface (handle, source.Handle, 0, 0);
- }
-
-#region Path methods
-
- public void NewPath ()
- {
- NativeMethods.cairo_new_path (handle);
- }
-
- public void NewSubPath ()
- {
- NativeMethods.cairo_new_sub_path (handle);
- }
-
- public void MoveTo (PointD p)
- {
- MoveTo (p.X, p.Y);
- }
-
- public void MoveTo (double x, double y)
- {
- NativeMethods.cairo_move_to (handle, x, y);
- }
-
- public void LineTo (PointD p)
- {
- LineTo (p.X, p.Y);
- }
-
- public void LineTo (double x, double y)
- {
- NativeMethods.cairo_line_to (handle, x, y);
- }
-
- public void CurveTo (PointD p1, PointD p2, PointD p3)
- {
- CurveTo (p1.X, p1.Y, p2.X, p2.Y, p3.X, p3.Y);
- }
-
- public void CurveTo (double x1, double y1, double x2, double y2, double x3, double y3)
- {
- NativeMethods.cairo_curve_to (handle, x1, y1, x2, y2, x3, y3);
- }
-
- public void RelMoveTo (Distance d)
- {
- RelMoveTo (d.Dx, d.Dy);
- }
-
- public void RelMoveTo (double dx, double dy)
- {
- NativeMethods.cairo_rel_move_to (handle, dx, dy);
- }
-
- public void RelLineTo (Distance d)
- {
- RelLineTo (d.Dx, d.Dy);
- }
-
- public void RelLineTo (double dx, double dy)
- {
- NativeMethods.cairo_rel_line_to (handle, dx, dy);
- }
-
- public void RelCurveTo (Distance d1, Distance d2, Distance d3)
- {
- RelCurveTo (d1.Dx, d1.Dy, d2.Dx, d2.Dy, d3.Dx, d3.Dy);
- }
-
- public void RelCurveTo (double dx1, double dy1, double dx2, double dy2, double dx3, double dy3)
- {
- NativeMethods.cairo_rel_curve_to (handle, dx1, dy1, dx2, dy2, dx3, dy3);
- }
-
- public void Arc (double xc, double yc, double radius, double angle1, double angle2)
- {
- NativeMethods.cairo_arc (handle, xc, yc, radius, angle1, angle2);
- }
-
- public void ArcNegative (double xc, double yc, double radius, double angle1, double angle2)
- {
- NativeMethods.cairo_arc_negative (handle, xc, yc, radius, angle1, angle2);
- }
-
- public void Rectangle (Crow.Rectangle rectangle)
- {
- Rectangle (rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
- }
-
- public void Rectangle (PointD p, double width, double height)
- {
- Rectangle (p.X, p.Y, width, height);
- }
-
- public void Rectangle (double x, double y, double width, double height)
- {
- NativeMethods.cairo_rectangle (handle, x, y, width, height);
- }
-
- public void ClosePath ()
- {
- NativeMethods.cairo_close_path (handle);
- }
-
- public Path CopyPath ()
- {
- return new Path (NativeMethods.cairo_copy_path (handle));
- }
-
- public Path CopyPathFlat ()
- {
- return new Path (NativeMethods.cairo_copy_path_flat (handle));
- }
-
- public void AppendPath (Path path)
- {
- NativeMethods.cairo_append_path (handle, path.Handle);
- }
-
-#endregion
-
-#region Painting Methods
- public void Paint ()
- {
- NativeMethods.cairo_paint (handle);
- }
-
- public void PaintWithAlpha (double alpha)
- {
- NativeMethods.cairo_paint_with_alpha (handle, alpha);
- }
-
- public void Mask (Pattern pattern)
- {
- NativeMethods.cairo_mask (handle, pattern.Handle);
- }
-
- public void MaskSurface (Surface surface, double surface_x, double surface_y)
- {
- NativeMethods.cairo_mask_surface (handle, surface.Handle, surface_x, surface_y);
- }
-
- public void Stroke ()
- {
- NativeMethods.cairo_stroke (handle);
- }
-
- public void StrokePreserve ()
- {
- NativeMethods.cairo_stroke_preserve (handle);
- }
-
- public Crow.Rectangle StrokeExtents ()
- {
- double x1, y1, x2, y2;
- NativeMethods.cairo_stroke_extents (handle, out x1, out y1, out x2, out y2);
- return new Crow.Rectangle ((int)x1, (int)y1, (int)(x2 - x1), (int)(y2 - y1));
- }
-
- public void Fill ()
- {
- NativeMethods.cairo_fill (handle);
- }
-
- public Crow.Rectangle FillExtents ()
- {
- double x1, y1, x2, y2;
- NativeMethods.cairo_fill_extents (handle, out x1, out y1, out x2, out y2);
- return new Crow.Rectangle ((int)x1, (int)y1, (int)(x2 - x1), (int)(y2 - y1));
- }
-
- public void FillPreserve ()
- {
- NativeMethods.cairo_fill_preserve (handle);
- }
-
-#endregion
-
- public void Clip ()
- {
- NativeMethods.cairo_clip (handle);
- }
-
- public void ClipPreserve ()
- {
- NativeMethods.cairo_clip_preserve (handle);
- }
-
- public void ResetClip ()
- {
- NativeMethods.cairo_reset_clip (handle);
- }
-
- public bool InClip (double x, double y)
- {
- return NativeMethods.cairo_in_clip (handle, x, y);
- }
- public RectangleList GetClipRectangles (){
- return (RectangleList)Marshal.PtrToStructure (NativeMethods.cairo_copy_clip_rectangle_list (handle), typeof(RectangleList));
- }
- public void ClipExtendRectangle (){
- double x1, y1, x2, y2;
- NativeMethods.cairo_clip_extents (handle, out x1, out y1, out x2, out y2);
- NativeMethods.cairo_rectangle (handle, x1, y1, x2 - x1, y2 - y1);
- }
- public bool InStroke (double x, double y)
- {
- return NativeMethods.cairo_in_stroke (handle, x, y);
- }
-
- public bool InFill (double x, double y)
- {
- return NativeMethods.cairo_in_fill (handle, x, y);
- }
-
- public Pattern PopGroup ()
- {
- return Pattern.Lookup (NativeMethods.cairo_pop_group (handle), true);
- }
-
- public void PopGroupToSource ()
- {
- NativeMethods.cairo_pop_group_to_source (handle);
- }
-
- public void PushGroup ()
- {
- NativeMethods.cairo_push_group (handle);
- }
-
- public void PushGroup (Content content)
- {
- NativeMethods.cairo_push_group_with_content (handle, content);
- }
-
- [Obsolete ("Use GetGroupTarget()")]
- public Surface GroupTarget {
- get {
- return GetGroupTarget ();
- }
- }
-
- public Surface GetGroupTarget ()
- {
- IntPtr surface = NativeMethods.cairo_get_group_target (handle);
- return Surface.Lookup (surface, false);
- }
-
- public void Rotate (double angle)
- {
- NativeMethods.cairo_rotate (handle, angle);
- }
-
- public void Scale (double sx, double sy)
- {
- NativeMethods.cairo_scale (handle, sx, sy);
- }
-
- public void Translate (double tx, double ty)
- {
- NativeMethods.cairo_translate (handle, tx, ty);
- }
-
- public void Transform (Matrix m)
- {
- NativeMethods.cairo_transform (handle, m);
- }
-
- [Obsolete("Use UserToDevice instead")]
- public void TransformPoint (ref double x, ref double y)
- {
- NativeMethods.cairo_user_to_device (handle, ref x, ref y);
- }
-
- [Obsolete("Use UserToDeviceDistance instead")]
- public void TransformDistance (ref double dx, ref double dy)
- {
- NativeMethods.cairo_user_to_device_distance (handle, ref dx, ref dy);
- }
-
- [Obsolete("Use InverseTransformPoint instead")]
- public void InverseTransformPoint (ref double x, ref double y)
- {
- NativeMethods.cairo_device_to_user (handle, ref x, ref y);
- }
-
- [Obsolete("Use DeviceToUserDistance instead")]
- public void InverseTransformDistance (ref double dx, ref double dy)
- {
- NativeMethods.cairo_device_to_user_distance (handle, ref dx, ref dy);
- }
-
- public void UserToDevice (ref double x, ref double y)
- {
- NativeMethods.cairo_user_to_device (handle, ref x, ref y);
- }
-
- public void UserToDeviceDistance (ref double dx, ref double dy)
- {
- NativeMethods.cairo_user_to_device_distance (handle, ref dx, ref dy);
- }
-
- public void DeviceToUser (ref double x, ref double y)
- {
- NativeMethods.cairo_device_to_user (handle, ref x, ref y);
- }
-
- public void DeviceToUserDistance (ref double dx, ref double dy)
- {
- NativeMethods.cairo_device_to_user_distance (handle, ref dx, ref dy);
- }
-
- public Matrix Matrix {
- set {
- NativeMethods.cairo_set_matrix (handle, value);
- }
-
- get {
- Matrix m = new Matrix();
- NativeMethods.cairo_get_matrix (handle, m);
- return m;
- }
- }
-
- public void SetFontSize (double scale)
- {
- NativeMethods.cairo_set_font_size (handle, scale);
- }
-
- public void IdentityMatrix ()
- {
- NativeMethods.cairo_identity_matrix (handle);
- }
-
- [Obsolete ("Use SetFontSize() instead.")]
- public void FontSetSize (double scale)
- {
- SetFontSize (scale);
- }
-
- [Obsolete ("Use SetFontSize() instead.")]
- public double FontSize {
- set { SetFontSize (value); }
- }
-
- public Matrix FontMatrix {
- get {
- Matrix m;
- NativeMethods.cairo_get_font_matrix (handle, out m);
- return m;
- }
- set { NativeMethods.cairo_set_font_matrix (handle, value); }
- }
-
- public FontOptions FontOptions {
- get {
- FontOptions options = new FontOptions ();
- NativeMethods.cairo_get_font_options (handle, options.Handle);
- return options;
- }
- set { NativeMethods.cairo_set_font_options (handle, value.Handle); }
- }
-
- [StructLayout(LayoutKind.Sequential)]
- internal struct NativeGlyph_4byte_longs {
- public int index;
- public double x;
- public double y;
-
- public NativeGlyph_4byte_longs (Glyph source)
- {
- index = (int) source.index;
- x = source.x;
- y = source.y;
- }
- }
-
- static internal IntPtr FromGlyphToUnManagedMemory(Glyph [] glyphs)
- {
- IntPtr dest = Marshal.AllocHGlobal (native_glyph_size * glyphs.Length);
- long pos = dest.ToInt64();
-
- if (c_compiler_long_size == 8){
- foreach (Glyph g in glyphs){
- Marshal.StructureToPtr (g, (IntPtr)pos, false);
- pos += native_glyph_size;
- }
- } else {
- foreach (Glyph g in glyphs){
- NativeGlyph_4byte_longs n = new NativeGlyph_4byte_longs (g);
-
- Marshal.StructureToPtr (n, (IntPtr)pos, false);
- pos += native_glyph_size;
- }
- }
-
- return dest;
- }
-
- public void ShowGlyphs (Glyph[] glyphs)
- {
- IntPtr ptr;
-
- ptr = FromGlyphToUnManagedMemory (glyphs);
-
- NativeMethods.cairo_show_glyphs (handle, ptr, glyphs.Length);
-
- Marshal.FreeHGlobal (ptr);
- }
-
- [Obsolete("The matrix argument was never used, use ShowGlyphs(Glyphs []) instead")]
- public void ShowGlyphs (Matrix matrix, Glyph[] glyphs)
- {
- ShowGlyphs (glyphs);
- }
-
- [Obsolete("The matrix argument was never used, use GlyphPath(Glyphs []) instead")]
- public void GlyphPath (Matrix matrix, Glyph[] glyphs)
- {
- GlyphPath (glyphs);
- }
-
- public void GlyphPath (Glyph[] glyphs)
- {
- IntPtr ptr;
-
- ptr = FromGlyphToUnManagedMemory (glyphs);
-
- NativeMethods.cairo_glyph_path (handle, ptr, glyphs.Length);
-
- Marshal.FreeHGlobal (ptr);
-
- }
-
- public FontExtents FontExtents {
- get {
- FontExtents f_extents;
- NativeMethods.cairo_font_extents (handle, out f_extents);
- return f_extents;
- }
- }
-
- public void CopyPage ()
- {
- NativeMethods.cairo_copy_page (handle);
- }
-
- [Obsolete ("Use SelectFontFace() instead.")]
- public void FontFace (string family, FontSlant slant, FontWeight weight)
- {
- SelectFontFace (family, slant, weight);
- }
-
- [Obsolete("Use GetFontFace/SetFontFace")]
- public FontFace ContextFontFace {
- get {
- return GetContextFontFace ();
- }
- set {
- SetContextFontFace (value);
- }
- }
-
- public FontFace GetContextFontFace ()
- {
- return Crow.Cairo.FontFace.Lookup (NativeMethods.cairo_get_font_face (handle), false);
- }
-
- public void SetContextFontFace (FontFace value)
- {
- NativeMethods.cairo_set_font_face (handle, value == null ? IntPtr.Zero : value.Handle);
- }
-
- public void SelectFontFace (string family, FontSlant slant, FontWeight weight)
- {
- NativeMethods.cairo_select_font_face (handle, family, slant, weight);
- }
-
- public void ShowPage ()
- {
- NativeMethods.cairo_show_page (handle);
- }
-
- private static byte[] TerminateUtf8(byte[] utf8)
- {
- if (utf8.Length > 0 && utf8[utf8.Length - 1] == 0)
- return utf8;
- var termedArray = new byte[utf8.Length + 1];
- Array.Copy(utf8, termedArray, utf8.Length);
- termedArray[utf8.Length] = 0;
- return termedArray;
- }
-
- private static byte[] TerminateUtf8(string s)
- {
- // compute the byte count including the trailing \0
- var byteCount = Encoding.UTF8.GetMaxByteCount(s.Length + 1);
- var bytes = new byte[byteCount];
- Encoding.UTF8.GetBytes(s, 0, s.Length, bytes, 0);
- return bytes;
- }
-
- public void ShowText(string str)
- {
- NativeMethods.cairo_show_text (handle, str);
- }
-
-
- public void TextPath(string str)
- {
- NativeMethods.cairo_text_path (handle, TerminateUtf8(str));
- }
-
- public void TextPath(byte[] utf8)
- {
- NativeMethods.cairo_text_path (handle, TerminateUtf8(utf8));
- }
-
- public TextExtents TextExtents(string s)
- {
- TextExtents extents;
- NativeMethods.cairo_text_extents (handle, s, out extents);
- return extents;
- }
-
-
- public TextExtents GlyphExtents (Glyph[] glyphs)
- {
- IntPtr ptr = FromGlyphToUnManagedMemory (glyphs);
-
- TextExtents extents;
-
- NativeMethods.cairo_glyph_extents (handle, ptr, glyphs.Length, out extents);
-
- Marshal.FreeHGlobal (ptr);
-
- return extents;
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Device.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace Crow.Cairo
-{
- public class DRMDevice : Device
- {
- public DRMDevice () : base (NativeMethods.cairo_drm_device_default (), true)
- {
- }
- public DRMDevice (int fd) : base (NativeMethods.cairo_drm_device_get_for_fd (fd), true)
- {
- }
- public DRMDevice (IntPtr udev_device) : base (NativeMethods.cairo_drm_device_get (udev_device), true)
- {
- }
-
- public int FileDescriptor {
- get { return NativeMethods.cairo_drm_device_get_fd (Handle); }
- }
-
- public void DeviceThrottle () { NativeMethods.cairo_drm_device_throttle (Handle);}
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.GLSurface.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class DRMSurface : Surface
- {
-
- public DRMSurface (IntPtr ptr, bool own) : base (ptr, own)
- {}
-
- public DRMSurface (DRMDevice device, Format format, int width, int height)
- : base (NativeMethods.cairo_drm_surface_create (device.Handle, format, width, height), true)
- {}
-
- public DRMSurface (DRMDevice device, uint name, Format format, int width, int height, int stride)
- : base (NativeMethods.cairo_drm_surface_create_for_name (device.Handle, name, format, width, height, stride), true)
- {}
-
- public DRMSurface (DRMDevice device, IntPtr imageSurface)
- : base (NativeMethods.cairo_drm_surface_create_from_cacheable_image (device.Handle, imageSurface), true)
- {}
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Device.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace Crow.Cairo
-{
- public class Device : IDisposable
- {
- IntPtr handle = IntPtr.Zero;
-
- protected Device()
- {
- }
-
- protected Device (IntPtr ptr) : this (ptr, true)
- {
- }
-
- protected Device (IntPtr handle, bool owner)
- {
- this.handle = handle;
- if (!owner)
- NativeMethods.cairo_device_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- ~Device ()
- {
- Dispose (false);
- }
-
- public IntPtr Handle {
- get {
- return handle;
- }
- }
- public string Status {
- get {
- return ""; //System.Runtime.InteropServices.Marshal.PtrToStringAuto(NativeMethods.cairo_status_to_string (NativeMethods.cairo_device_status (handle)));
- }
- }
- public void SetThreadAware (bool value){
- NativeMethods.cairo_gl_device_set_thread_aware (handle, value ? 1 : 0);
- }
- public Status Acquire()
- {
- return NativeMethods.cairo_device_acquire (handle);
- }
- public void Release()
- {
- NativeMethods.cairo_device_release (handle);
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<Device> (handle, disposing);
-
- if (!disposing || handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_device_destroy (handle);
- handle = IntPtr.Zero;
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.DirectFBSurface.cs
-//
-// Authors:
-// Alp Toker
-//
-// (C) Alp Toker, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
- public class DirectFBSurface : Surface
- {
- internal DirectFBSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public DirectFBSurface (IntPtr dfb, IntPtr dfb_surface)
- : base (NativeMethods.cairo_directfb_surface_create (dfb, dfb_surface), true)
- {
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Context.cs
-//
-// Author:
-// Duncan Mak (duncan@ximian.com)
-// Miguel de Icaza (miguel@novell.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell Inc, 2003.
-//
-// This is an OO wrapper API for the Cairo API.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Crow.Cairo {
-
- public struct Distance
- {
- public Distance (double dx, double dy)
- {
- this.dx = dx;
- this.dy = dy;
- }
-
- double dx, dy;
- public double Dx {
- get { return dx; }
- set { dx = value; }
- }
-
- public double Dy {
- get { return dy; }
- set { dy = value; }
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Device.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace Crow.Cairo
-{
- public class EGLDevice : Device
- {
- public EGLDevice (IntPtr dpy, IntPtr gl_ctx) : base (NativeMethods.cairo_egl_device_create (dpy, gl_ctx), true)
- {
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.Extend.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// John Luke (john.luke@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2005 John Luke
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum Extend
- {
- None,
- Repeat,
- Reflect,
- Pad,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.FillRule.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum FillRule
- {
- Winding,
- EvenOdd
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Filter.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum Filter
- {
- Fast,
- Good,
- Best,
- Nearest,
- Bilinear,
- Gaussian,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.FontExtents.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-//
-// This is a simplistic binding of the Cairo API to C#. All functions
-// in cairo.h are transcribed into their C# equivelants
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo
-{
- [StructLayout (LayoutKind.Sequential)]
- public struct FontExtents
- {
- double ascent;
- double descent;
- double height;
- double maxXAdvance;
- double maxYAdvance;
-
- public double Ascent {
- get { return ascent; }
- set { ascent = value; }
- }
-
- public double Descent {
- get { return descent; }
- set { descent = value; }
- }
-
- public double Height {
- get { return height; }
- set { height = value; }
- }
-
- public double MaxXAdvance {
- get { return maxXAdvance; }
- set { maxXAdvance = value; }
- }
-
- public double MaxYAdvance {
- get { return maxYAdvance; }
- set { maxYAdvance = value; }
- }
-
- public FontExtents (double ascent, double descent, double height, double maxXAdvance, double maxYAdvance)
- {
- this.ascent = ascent;
- this.descent = descent;
- this.height = height;
- this.maxXAdvance = maxXAdvance;
- this.maxYAdvance = maxYAdvance;
- }
-
- public override bool Equals (object obj)
- {
- if (obj is FontExtents)
- return this == (FontExtents) obj;
- return false;
- }
-
- public override int GetHashCode ()
- {
- return (int) Ascent ^ (int) Descent ^ (int) Height ^ (int) MaxXAdvance ^ (int) MaxYAdvance;
- }
-
- public static bool operator == (FontExtents extents, FontExtents other)
- {
- return extents.Ascent == other.Ascent && extents.Descent == other.Descent && extents.Height == other.Height && extents.MaxXAdvance == other.MaxXAdvance && extents.MaxYAdvance == other.MaxYAdvance;
- }
-
- public static bool operator != (FontExtents extents, FontExtents other)
- {
- return !(extents == other);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.FontFace.cs
-//
-// Author:
-// Alp Toker (alp@atoker.com)
-// Miguel de Icaza (miguel@novell.com)
-//
-// (C) Ximian Inc, 2003.
-//
-// This is an OO wrapper API for the Cairo API.
-//
-// Copyright (C) 2004, 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace Crow.Cairo
-{
- public class FontFace : IDisposable
- {
- IntPtr handle;
-
- internal static FontFace Lookup (IntPtr handle, bool owner)
- {
- if (handle == IntPtr.Zero)
- return null;
- return new FontFace (handle, owner);
- }
-
- ~FontFace ()
- {
- Dispose (false);
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<FontFace> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_font_face_destroy (handle);
- handle = IntPtr.Zero;
- }
-
- [Obsolete]
- public FontFace (IntPtr handle) : this (handle, true)
- {
- }
-
- public FontFace (IntPtr handle, bool owned)
- {
- this.handle = handle;
- if (!owned)
- NativeMethods.cairo_font_face_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- public IntPtr Handle {
- get {
- return handle;
- }
- }
-
- public Status Status {
- get {
- return NativeMethods.cairo_font_face_status (handle);
- }
- }
-
- public FontType FontType {
- get {
- return NativeMethods.cairo_font_face_get_type (handle);
- }
- }
-
- public uint ReferenceCount {
- get { return NativeMethods.cairo_font_face_get_reference_count (handle); }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.FontOptions.cs
-//
-// Author:
-// John Luke (john.luke@gmail.com)
-//
-// (C) John Luke 2005.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
- public class FontOptions : IDisposable
- {
- IntPtr handle;
-
- public FontOptions () : this (NativeMethods.cairo_font_options_create ())
- {
- }
-
- ~FontOptions ()
- {
- Dispose (false);
- }
-
- internal FontOptions (IntPtr handle)
- {
- this.handle = handle;
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- public FontOptions Copy ()
- {
- return new FontOptions (NativeMethods.cairo_font_options_copy (handle));
- }
-
- [Obsolete ("Use Dispose()")]
- public void Destroy ()
- {
- Dispose ();
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<FontOptions> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_font_options_destroy (handle);
- handle = IntPtr.Zero;
- }
-
- public static bool operator == (FontOptions options, FontOptions other)
- {
- return Equals (options, other);
- }
-
- public static bool operator != (FontOptions options, FontOptions other)
- {
- return !(options == other);
- }
-
- public override bool Equals (object other)
- {
- return Equals (other as FontOptions);
- }
-
- bool Equals (FontOptions options)
- {
- return options != null && NativeMethods.cairo_font_options_equal (Handle, options.Handle);
- }
-
- public IntPtr Handle {
- get { return handle; }
- }
-
- public override int GetHashCode ()
- {
- return (int) NativeMethods.cairo_font_options_hash (handle);
- }
-
- public void Merge (FontOptions other)
- {
- if (other == null)
- throw new ArgumentNullException ("other");
- NativeMethods.cairo_font_options_merge (handle, other.Handle);
- }
-
- public Antialias Antialias {
- get { return NativeMethods.cairo_font_options_get_antialias (handle); }
- set { NativeMethods.cairo_font_options_set_antialias (handle, value); }
- }
-
- public HintMetrics HintMetrics {
- get { return NativeMethods.cairo_font_options_get_hint_metrics (handle);}
- set { NativeMethods.cairo_font_options_set_hint_metrics (handle, value); }
- }
-
- public HintStyle HintStyle {
- get { return NativeMethods.cairo_font_options_get_hint_style (handle);}
- set { NativeMethods.cairo_font_options_set_hint_style (handle, value); }
- }
-
- public Status Status {
- get { return NativeMethods.cairo_font_options_status (handle); }
- }
-
- public SubpixelOrder SubpixelOrder {
- get { return NativeMethods.cairo_font_options_get_subpixel_order (handle);}
- set { NativeMethods.cairo_font_options_set_subpixel_order (handle, value); }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.FontSlant.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum FontSlant
- {
- Normal,
- Italic,
- Oblique
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.FontType.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
-
- public enum FontType
- {
- Toy,
- FreeType,
- Win32,
- Atsui,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.FontWeight.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum FontWeight
- {
- Normal,
- Bold,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Format.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum Format
- {
- Argb32 = 0,
- Rgb24 = 1,
- A8 = 2,
- A1 = 3,
- Rgb16565 = 4,
-
- //[Obsolete ("Use Argb32")]
- ARGB32 = Argb32,
- //[Obsolete ("Use Rgb24")]
- RGB24 = Rgb24,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.GLSurface.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class GLSurface : Surface
- {
-
- public GLSurface (IntPtr ptr, bool own) : base (ptr, own)
- {}
-
- public GLSurface (Device device, Crow.Cairo.Content content, uint tex, int width, int height)
- : base (NativeMethods.cairo_gl_surface_create_for_texture (device.Handle, (uint)content, tex, width, height), true)
- {}
-
- public GLSurface (EGLDevice device, IntPtr eglSurf, int width, int height)
- : base (NativeMethods.cairo_gl_surface_create_for_egl (device.Handle, eglSurf, width, height), true)
- {}
-
- public GLSurface (GLXDevice device, IntPtr window, int width, int height)
- : base (NativeMethods.cairo_gl_surface_create_for_window (device.Handle, window, width, height),true)
- {}
-
- public GLSurface (WGLDevice device, IntPtr hdc, int width, int height)
- : base (NativeMethods.cairo_gl_surface_create_for_dc (device.Handle, hdc, width, height), true)
- {}
-
- public void SwapBuffers(){
- NativeMethods.cairo_gl_surface_swapbuffers (this.Handle);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Device.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace Crow.Cairo
-{
- public class GLXDevice : Device
- {
- public GLXDevice (IntPtr dpy, IntPtr gl_ctx) : base (NativeMethods.cairo_glx_device_create (dpy, gl_ctx), true)
- {
- }
-
- public IntPtr Display {
- get { return NativeMethods.cairo_glx_device_get_display (Handle); }
- }
-
- public IntPtr Context {
- get { return NativeMethods.cairo_glx_device_get_context (Handle); }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.GlitzSurface.cs
-//
-// Authors:
-// Alp Toker
-//
-// (C) Alp Toker, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
- public class GlitzSurface : Surface
- {
- internal GlitzSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public GlitzSurface (IntPtr glitz_surface)
- : base (NativeMethods.cairo_glitz_surface_create (glitz_surface), true)
- {
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Glyph.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo
-{
- [StructLayout(LayoutKind.Sequential)]
- public struct Glyph
- {
- internal long index;
- internal double x;
- internal double y;
-
- public Glyph (long index, double x, double y)
- {
- this.index = index;
- this.x = x;
- this.y = y;
- }
-
- public long Index {
- get { return index; }
- set { index = value; }
- }
-
- public double X {
- get { return x; }
- set { x = value; }
- }
-
- public double Y {
- get { return y; }
- set { y = value; }
- }
-
- public override bool Equals (object obj)
- {
- if (obj is Glyph)
- return this == (Glyph)obj;
- return false;
- }
-
- public override int GetHashCode ()
- {
- return (int) Index ^ (int) X ^ (int) Y;
- }
-
- internal static IntPtr GlyphsToIntPtr (Glyph[] glyphs)
- {
- int size = Marshal.SizeOf (glyphs[0]);
- IntPtr dest = Marshal.AllocHGlobal (size * glyphs.Length);
- long pos = dest.ToInt64 ();
- for (int i = 0; i < glyphs.Length; i++, pos += size)
- Marshal.StructureToPtr (glyphs[i], (IntPtr) pos, false);
- return dest;
- }
-
- public static bool operator == (Glyph glyph, Glyph other)
- {
- return glyph.Index == other.Index && glyph.X == other.X && glyph.Y == other.Y;
- }
-
- public static bool operator != (Glyph glyph, Glyph other)
- {
- return !(glyph == other);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Gradient.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using Color = Crow.Color;
-namespace Crow.Cairo {
-
- public class Gradient : Pattern
- {
- protected Gradient (IntPtr handle, bool owned) : base (handle, owned)
- {
- }
-
- [Obsolete]
- protected Gradient ()
- {
- }
-
- public int ColorStopCount {
- get {
- int cnt;
- NativeMethods.cairo_pattern_get_color_stop_count (Handle, out cnt);
- return cnt;
- }
- }
-
- public Status AddColorStop (double offset, Color c)
- {
- NativeMethods.cairo_pattern_add_color_stop_rgba (Handle, offset, c.R, c.G, c.B, c.A);
- return Status;
- }
-
- public Status AddColorStopRgb (double offset, Color c)
- {
- NativeMethods.cairo_pattern_add_color_stop_rgb (Handle, offset, c.R, c.G, c.B);
- return Status;
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.HintMetrics.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum HintMetrics
- {
- Default,
- Off,
- On,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.HintStyle.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum HintStyle
- {
- Default,
- None,
- Slight,
- Medium,
- Full,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.ImageSurface.cs
-//
-// Authors:
-// Duncan Mak
-// Miguel de Icaza.
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell, Inc. 2003.
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo {
-
- public class ImageSurface : Surface
- {
- internal ImageSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public ImageSurface (Format format, int width, int height)
- : base (NativeMethods.cairo_image_surface_create (format, width, height), true)
- {
- }
-
- [Obsolete ("Use ImageSurface (byte[] data, Cairo.Format format, int width, int height, int stride)")]
- public ImageSurface (ref byte[] data, Crow.Cairo.Format format, int width, int height, int stride)
- : this (data, format, width, height, stride)
- {
- }
-
- public ImageSurface (byte[] data, Format format, int width, int height, int stride)
- : base (NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride), true)
- {
- }
-
- public ImageSurface (IntPtr data, Format format, int width, int height, int stride)
- : base (NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride), true)
- {
- }
-
- public ImageSurface (string filename)
- : base (NativeMethods.cairo_image_surface_create_from_png (filename), true)
- {
- }
-
- public int Width {
- get { return NativeMethods.cairo_image_surface_get_width (Handle); }
- }
-
- public int Height {
- get { return NativeMethods.cairo_image_surface_get_height (Handle); }
- }
-
- public byte[] Data {
- get {
- IntPtr ptr = NativeMethods.cairo_image_surface_get_data (Handle);
- int length = Height * Stride;
- byte[] data = new byte[length];
- Marshal.Copy (ptr, data, 0, length);
- return data;
- }
- }
-
- public IntPtr DataPtr {
- get {
- return NativeMethods.cairo_image_surface_get_data (Handle);
- }
- }
-
- public Format Format {
- get { return NativeMethods.cairo_image_surface_get_format (Handle); }
- }
-
- public int Stride {
- get { return NativeMethods.cairo_image_surface_get_stride (Handle); }
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.LineCap.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum LineCap
- {
- Butt,
- Round,
- Square,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.LineJoin.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum LineJoin
- {
- Miter,
- Round,
- Bevel
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.LinearGradient.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class LinearGradient : Gradient
- {
- internal LinearGradient (IntPtr handle, bool owned) : base (handle, owned)
- {
- }
-
- public LinearGradient (double x0, double y0, double x1, double y1)
- : base (NativeMethods.cairo_pattern_create_linear (x0, y0, x1, y1), true)
- {
- }
-
- public PointD[] LinearPoints {
- get {
- double x0, y0, x1, y1;
- PointD[] points = new PointD [2];
-
- NativeMethods.cairo_pattern_get_linear_points (Handle, out x0, out y0, out x1, out y1);
-
- points[0] = new PointD (x0, y0);
- points[1] = new PointD (x1, y1);
- return points;
- }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.Matrix.cs
-//
-// Author: Duncan Mak
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// Idan Gazit (idan@fastmail.fm)
-//
-// (C) Ximian Inc, 2003 - 2005.
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo {
-
- [StructLayout(LayoutKind.Sequential)]
- public class Matrix //: ICloneable
- {
- public double Xx;
- public double Yx;
- public double Xy;
- public double Yy;
- public double X0;
- public double Y0;
-
- public Matrix (double xx, double yx, double xy, double yy,
- double x0, double y0)
- {
- this.Xx = xx; this.Yx = yx; this.Xy = xy;
- this.Yy = yy; this.X0 = x0; this.Y0 = y0;
- }
-
- public Matrix ()
- {
- this.InitIdentity ();
- }
-
- public bool IsIdentity ()
- {
- return (this == new Matrix ());
- }
-
- public void InitIdentity ()
- {
- // this.Init(1,0,0,1,0,0);
- NativeMethods.cairo_matrix_init_identity (this);
- }
-
- public void Init (double xx, double yx, double xy, double yy,
- double x0, double y0)
- {
- this.Xx = xx; this.Yx = yx; this.Xy = xy;
- this.Yy = yy; this.X0 = x0; this.Y0 = y0;
- }
-
- public void InitTranslate (double tx, double ty)
- {
- //this.Init (1, 0, 0, 1, tx, ty);
- NativeMethods.cairo_matrix_init_translate (this, tx, ty);
- }
-
- public void Translate (double tx, double ty)
- {
- NativeMethods.cairo_matrix_translate (this, tx, ty);
- }
-
- public void InitScale (double sx, double sy)
- {
- //this.Init (sx, 0, 0, sy, 0, 0);
- NativeMethods.cairo_matrix_init_scale (this, sx, sy);
- }
-
- public void Scale (double sx, double sy)
- {
- NativeMethods.cairo_matrix_scale (this, sx, sy);
- }
-
- public void InitRotate (double radians)
- {
- /*
- double s, c;
- s = Math.Sin (radians);
- c = Math.Cos (radians);
- this.Init (c, s, -s, c, 0, 0);
- */
- NativeMethods.cairo_matrix_init_rotate (this, radians);
- }
-
- public void Rotate (double radians)
- {
- NativeMethods.cairo_matrix_rotate (this, radians);
- }
-
- public Crow.Cairo.Status Invert ()
- {
- return NativeMethods.cairo_matrix_invert (this);
- }
-
- public void Multiply (Matrix b)
- {
- Matrix a = (Matrix) this.Clone ();
- NativeMethods.cairo_matrix_multiply (this, a, b);
- }
-
- public static Matrix Multiply (Matrix a, Matrix b) {
- Matrix result = new Matrix ();
- NativeMethods.cairo_matrix_multiply (result, a, b);
- return result;
- }
-
-
- public void TransformDistance (ref double dx, ref double dy)
- {
- NativeMethods.cairo_matrix_transform_distance (this, ref dx, ref dy);
- }
-
- public void TransformPoint (ref double x, ref double y)
- {
- NativeMethods.cairo_matrix_transform_point (this, ref x, ref y);
- }
-
- public override String ToString ()
- {
- String s = String.Format ("xx:{0:##0.0#} yx:{1:##0.0#} xy:{2:##0.0#} yy:{3:##0.0#} x0:{4:##0.0#} y0:{5:##0.0#}",
- this.Xx, this.Yx, this.Xy, this.Yy, this.X0, this.Y0);
- return s;
- }
-
- public static bool operator == (Matrix lhs, Matrix rhs)
- {
- return (lhs.Xx == rhs.Xx &&
- lhs.Xy == rhs.Xy &&
- lhs.Yx == rhs.Yx &&
- lhs.Yy == rhs.Yy &&
- lhs.X0 == rhs.X0 &&
- lhs.Y0 == rhs.Y0 );
- }
-
- public static bool operator != (Matrix lhs, Matrix rhs)
- {
- return !(lhs==rhs);
- }
-
-
-
- public override bool Equals(object o)
- {
- if (! (o is Matrix))
- return false;
- else
- return (this == (Matrix) o);
- }
-
- public override int GetHashCode()
- {
- return (int)this.Xx ^ (int)this.Xx>>32 ^
- (int)this.Xy ^ (int)this.Xy>>32 ^
- (int)this.Yx ^ (int)this.Yx>>32 ^
- (int)this.Yy ^ (int)this.Yy>>32 ^
- (int)this.X0 ^ (int)this.X0>>32 ^
- (int)this.Y0 ^ (int)this.Y0>>32;
- }
-
- public object Clone()
- {
- return this.MemberwiseClone ();
- }
-
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Pattern.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class MeshPattern : Pattern
- {
- internal MeshPattern (IntPtr handle, bool owned) : base (handle, owned)
- {
- }
-
- public MeshPattern ()
- : base (NativeMethods.cairo_pattern_create_mesh(), true)
- {
- }
-
- //no idea why this is here, the base one is identical, but we can't remove it now
- public new Extend Extend {
- set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
- get { return NativeMethods.cairo_pattern_get_extend (Handle); }
- }
-
- public Filter Filter {
- set { NativeMethods.cairo_pattern_set_filter (Handle, value); }
- get { return NativeMethods.cairo_pattern_get_filter (Handle); }
- }
-
- public void BeginPatch(){
- NativeMethods.cairo_mesh_pattern_begin_patch (Handle);
- }
- public void EndPatch(){
- NativeMethods.cairo_mesh_pattern_end_patch (Handle);
- }
- public void MoveTo(double x, double y){
- NativeMethods.cairo_mesh_pattern_move_to (Handle, x, y);
- }
- public void LineTo(double x, double y){
- NativeMethods.cairo_mesh_pattern_line_to (Handle, x, y);
- }
- public void CurveTo(double x1, double y1, double x2, double y2, double x3, double y3)
- {
- NativeMethods.cairo_mesh_pattern_curve_to (Handle, x1, y1, x2, y2, x3, y3);
- }
- public void SetControlPoint(uint point_num, double x, double y){
- NativeMethods.cairo_mesh_pattern_set_control_point (Handle, point_num, x, y);
- }
- public void SetCornerColorRGB(uint corner_num, double r, double g, double b){
- NativeMethods.cairo_mesh_pattern_set_corner_color_rgb (Handle, corner_num, r, g, b);
- }
- public void SetCornerColorRGBA(uint corner_num, double r, double g, double b, double a){
- NativeMethods.cairo_mesh_pattern_set_corner_color_rgba (Handle, corner_num, r, g, b, a);
- }
- public uint PatchCount {
- get {
- uint count = 0;
- NativeMethods.cairo_mesh_pattern_get_patch_count(Handle, out count);
- return count;
- }
- }
- public Path GetPath(uint patch_num){
- return new Path(NativeMethods.cairo_mesh_pattern_get_path(Handle, patch_num));
- }
- public void GetControlPoint(){
- }
- public void GetCornerColorRGBA(){
-
- }
- }
-}
-
+++ /dev/null
-//
-// Cairo.cs - a simplistic binding of the Cairo API to C#.
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// John Luke (john.luke@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2005 John Luke
-// Copyright (C) 2006 Alp Toker
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using System.Runtime.CompilerServices;
-
-namespace Cairo
-{
- // sort the functions like in the following page so it is easier to find what is missing
- // http://cairographics.org/manual/index-all.html
-
- public static class NativeMethods
- {
- #if MONOTOUCH
- const string cairo = "__Internal";
- #else
- const string cairo = "libcairo-2.dll";
- #endif
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern void cairo_append_path (IntPtr cr, Path path);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_arc (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_arc_negative (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
-
- // [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- // public static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_clip (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_clip_preserve (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_clip_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_close_path (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_copy_page (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_copy_path (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_copy_path_flat (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_create (IntPtr target);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_debug_reset_static_data ();
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_destroy (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_fill (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_fill_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_fill_preserve (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_extents (IntPtr cr, out FontExtents extents);
-
- #region FontFace
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_face_destroy (IntPtr font_face);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern FontType cairo_font_face_get_type (IntPtr font_face);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern void cairo_font_face_get_user_data (IntPtr font_face);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern void cairo_font_face_set_user_data (IntPtr font_face);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_font_face_reference (IntPtr font_face);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_font_face_status (IntPtr font_face);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern uint cairo_font_face_get_reference_count (IntPtr surface);
- #endregion
-
- #region FontOptions
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_font_options_copy (IntPtr original);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_font_options_create ();
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_options_destroy (IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern bool cairo_font_options_equal (IntPtr options, IntPtr other);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Antialias cairo_font_options_get_antialias (IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern HintStyle cairo_font_options_get_hint_style (IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern long cairo_font_options_hash (IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_options_merge (IntPtr options, IntPtr other);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_font_options_status (IntPtr options);
- #endregion
-
- #region Freetype / FontConfig
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_ft_font_face_create_for_ft_face (IntPtr face, int load_flags);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Antialias cairo_get_antialias (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_get_current_point (IntPtr cr, out double x, out double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern FillRule cairo_get_fill_rule (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_get_font_face (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_get_font_options (IntPtr cr, IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_get_group_target (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern LineCap cairo_get_line_cap (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern LineJoin cairo_get_line_join (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern double cairo_get_line_width (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_get_matrix (IntPtr cr, Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern double cairo_get_miter_limit (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Operator cairo_get_operator (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern uint cairo_get_reference_count (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_get_source (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_get_target (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern double cairo_get_tolerance (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_glitz_surface_create (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- [return: MarshalAs (UnmanagedType.U1)]
- public static extern bool cairo_has_current_point (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_identity_matrix (IntPtr cr);
-
- #region Image Surface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_image_surface_create (Cairo.Format format, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- public static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Cairo.Format format, int width, int height, int stride);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Cairo.Format format, int width, int height, int stride);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_image_surface_create_from_png (string filename);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern IntPtr cairo_image_surface_create_from_png_stream (string filename);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Format cairo_image_surface_get_format (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_image_surface_get_height (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_image_surface_get_stride (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_image_surface_get_width (IntPtr surface);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- [return: MarshalAs (UnmanagedType.U1)]
- public static extern bool cairo_in_clip (IntPtr cr, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- [return: MarshalAs (UnmanagedType.U1)]
- public static extern bool cairo_in_fill (IntPtr cr, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- [return: MarshalAs (UnmanagedType.U1)]
- public static extern bool cairo_in_stroke (IntPtr cr, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_line_to (IntPtr cr, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_mask (IntPtr cr, IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
-
- #region Matrix
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_init_identity (Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_matrix_invert (Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_rotate (Matrix matrix, double radians);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_move_to (IntPtr cr, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_new_path (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_new_sub_path (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_paint (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_path_destroy (IntPtr path);
-
- #region Pattern
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count);
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_get_color_stop_rgba (IntPtr pattern, int index, out double offset, out double red, out double green, out double blue, out double alpha);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_get_radial_circles (IntPtr pattern, out double x0, out double y0, out double r0, out double x1, out double y1, out double r1);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_destroy (IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Extend cairo_pattern_get_extend (IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Filter cairo_pattern_get_filter (IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern PatternType cairo_pattern_get_type (IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pattern_reference (IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_pattern_status (IntPtr pattern);
- #endregion
-
- #region PdfSurface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
- #endregion
-
- #region PostscriptSurface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_pop_group (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_pop_group_to_source (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_push_group (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_push_group_with_content (IntPtr cr, Content content);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_reference (IntPtr cr);
-
- #region Regions
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref Crow.Rectangle rectangle);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_region_copy (IntPtr original);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_region_create ();
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_region_create_rectangle (ref Crow.Rectangle rect);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_region_create_rectangles (IntPtr rects, int count);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_region_destroy (IntPtr region);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern bool cairo_region_equal (IntPtr a, IntPtr b);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_region_get_extents (IntPtr region, out Crow.Rectangle extents);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_region_get_rectangle (IntPtr region, int nth, out Crow.Rectangle rectangle);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern bool cairo_region_is_empty (IntPtr region);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_region_num_rectangles (IntPtr region);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_region_reference (IntPtr region);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_status (IntPtr region);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_region_translate (IntPtr region, int dx, int dy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_union (IntPtr dst, IntPtr other);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_union_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_region_xor_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_reset_clip (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_restore (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_rotate (IntPtr cr, double angle);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_save (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_scale (IntPtr cr, double sx, double sy);
-
- #region ScaledFont
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_scaled_font_status (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_get_scaled_font (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- public static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- public static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_get_dash_count (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_fill_rule (IntPtr cr, Cairo.FillRule fill_rule);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- public static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_font_size (IntPtr cr, double size);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_line_width (IntPtr cr, double width);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_miter_limit (IntPtr cr, double limit);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_operator (IntPtr cr, Cairo.Operator op);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_show_page (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_show_text (IntPtr cr, string str);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_status (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_status_to_string (Status status);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_stroke (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_stroke_preserve (IntPtr cr);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
-
- #region Surface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_surface_create_similar (IntPtr surface, Cairo.Content content, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_destroy (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_finish (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_flush (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Content cairo_surface_get_content (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern uint cairo_surface_get_reference_count (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern SurfaceType cairo_surface_get_type (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_mark_dirty (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_surface_reference (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_surface_status (IntPtr surface);
- #endregion
-
- #region SVG surface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
-
- //[MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- //public static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_text_extents (IntPtr cr, string txt, out TextExtents extents);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- public static extern void cairo_text_path (IntPtr ct, byte[] utf8);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_transform (IntPtr cr, Matrix matrix);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_translate (IntPtr cr, double tx, double ty);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_version ();
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_version_string ();
-
- #region DirectFBSurface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
- #endregion
-
- #region win32 fonts
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
- #endregion
-
- #region win32 surface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height);
- #endregion
-
- #region XcbSurface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
- #endregion
-
- #region XlibSurface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_xlib_surface_get_depth (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_xlib_surface_get_height (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_xlib_surface_get_width (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);
- #endregion
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_gl_device_set_thread_aware(IntPtr device, int value);
-
- #region GLSurface
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_gl_surface_create (IntPtr device, uint content, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_gl_surface_create_for_texture (IntPtr device, uint content, uint tex, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_gl_surface_set_size (IntPtr surface, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_gl_surface_get_width (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_gl_surface_get_height (IntPtr surface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_gl_surface_swapbuffers (IntPtr surf);
- #endregion
-
- #region GLX Functions
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_glx_device_create (IntPtr dpy, IntPtr gl_ctx);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_glx_device_get_display (IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_glx_device_get_context (IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_gl_surface_create_for_window (IntPtr device, IntPtr window, int width, int height);
- #endregion
-
- #region WGL Fucntions
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_wgl_device_create (IntPtr hglrc);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_wgl_device_get_context (IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_gl_surface_create_for_dc (IntPtr device, IntPtr hdc, int width, int height);
- #endregion
-
- #region EGL Functions
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_egl_device_create (IntPtr dpy, IntPtr gl_ctx);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_gl_surface_create_for_egl (IntPtr device, IntPtr eglSurface, int width, int height);
- #endregion
-
- #region DRM Functions
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_device_get (IntPtr udev_device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_device_get_for_fd (int fd);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_device_default ();
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_drm_device_get_fd (IntPtr cairo_device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_drm_device_throttle (IntPtr cairo_device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_surface_create (IntPtr cairo_device, Format format, int width, int height);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_surface_create_for_name (IntPtr cairo_device, uint name, Format format, int width, int height, int stride);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_surface_create_from_cacheable_image (IntPtr cairo_device, IntPtr imageSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_drm_surface_enable_scan_out (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_surface_get_handle (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_surface_get_name (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Format cairo_drm_surface_get_format (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_drm_surface_get_width (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_drm_surface_get_height (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern int cairo_drm_surface_get_stride (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_drm_surface_map_to_image (IntPtr drmSurface);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_drm_surface_unmap (IntPtr drmSurface, IntPtr imageSurface);
- #endregion
-
- #region Device
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_device_acquire(IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_device_destroy (IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern IntPtr cairo_device_reference (IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void cairo_device_release(IntPtr device);
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern Status cairo_device_status(IntPtr device);
- #endregion
-
-
-
- [MethodImplAttribute(MethodImplOptions.InternalCall)][System.Security.SecuritySafeCriticalAttribute]
- public static extern void crow_cairo_region_clear(IntPtr ctx, IntPtr reg);
-
- }
-}
\ No newline at end of file
+++ /dev/null
-//
-// Cairo.cs - a simplistic binding of the Cairo API to C#.
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// John Luke (john.luke@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2005 John Luke
-// Copyright (C) 2006 Alp Toker
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo
-{
- // sort the functions like in the following page so it is easier to find what is missing
- // http://cairographics.org/manual/index-all.html
-
- internal static class NativeMethods
- {
-#if MONOTOUCH
- const string cairo = "__Internal";
-#else
- const string cairo = "cairo";
-#endif
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern void cairo_append_path (IntPtr cr, Path path);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_arc (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_arc_negative (IntPtr cr, double xc, double yc, double radius, double angle1, double angle2);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_atsui_font_face_create_for_atsu_font_id (IntPtr font_id);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_clip (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_clip_preserve (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_clip_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_close_path (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_copy_page (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_copy_path (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_copy_path_flat (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_append_path (IntPtr cr, IntPtr path);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_create (IntPtr target);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_debug_reset_static_data ();
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_destroy (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_device_to_user (IntPtr cr, ref double x, ref double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_device_to_user_distance (IntPtr cr, ref double dx, ref double dy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_fill (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_fill_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_fill_preserve (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_extents (IntPtr cr, out FontExtents extents);
-
- #region FontFace
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_face_destroy (IntPtr font_face);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern FontType cairo_font_face_get_type (IntPtr font_face);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern void cairo_font_face_get_user_data (IntPtr font_face);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern void cairo_font_face_set_user_data (IntPtr font_face);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_font_face_reference (IntPtr font_face);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_font_face_status (IntPtr font_face);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern uint cairo_font_face_get_reference_count (IntPtr surface);
- #endregion
-
- #region FontOptions
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_font_options_copy (IntPtr original);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_font_options_create ();
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_options_destroy (IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- [return: MarshalAs (UnmanagedType.U1)]
- internal static extern bool cairo_font_options_equal (IntPtr options, IntPtr other);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Antialias cairo_font_options_get_antialias (IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern HintMetrics cairo_font_options_get_hint_metrics (IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern HintStyle cairo_font_options_get_hint_style (IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern SubpixelOrder cairo_font_options_get_subpixel_order (IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern long cairo_font_options_hash (IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_options_merge (IntPtr options, IntPtr other);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_options_set_antialias (IntPtr options, Antialias aa);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_options_set_hint_metrics (IntPtr options, HintMetrics metrics);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_options_set_hint_style (IntPtr options, HintStyle style);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_font_options_set_subpixel_order (IntPtr options, SubpixelOrder order);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_font_options_status (IntPtr options);
- #endregion
-
- #region Freetype / FontConfig
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_ft_font_face_create_for_ft_face (IntPtr face, int load_flags);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_ft_font_face_create_for_pattern (IntPtr fc_pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_ft_font_options_substitute (FontOptions options, IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_ft_scaled_font_lock_face (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_ft_scaled_font_unlock_face (IntPtr scaled_font);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Antialias cairo_get_antialias (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_get_current_point (IntPtr cr, out double x, out double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern FillRule cairo_get_fill_rule (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_get_font_face (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_get_font_matrix (IntPtr cr, out Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_get_font_options (IntPtr cr, IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_get_group_target (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern LineCap cairo_get_line_cap (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern LineJoin cairo_get_line_join (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern double cairo_get_line_width (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_get_matrix (IntPtr cr, Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern double cairo_get_miter_limit (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Operator cairo_get_operator (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern uint cairo_get_reference_count (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_get_source (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_get_target (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern double cairo_get_tolerance (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_glitz_surface_create (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_glyph_extents (IntPtr cr, IntPtr glyphs, int num_glyphs, out TextExtents extents);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_glyph_path (IntPtr cr, IntPtr glyphs, int num_glyphs);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- [return: MarshalAs (UnmanagedType.U1)]
- internal static extern bool cairo_has_current_point (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_identity_matrix (IntPtr cr);
-
- #region Image Surface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_image_surface_create (Crow.Cairo.Format format, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_image_surface_create_for_data (byte[] data, Crow.Cairo.Format format, int width, int height, int stride);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_image_surface_create_for_data (IntPtr data, Crow.Cairo.Format format, int width, int height, int stride);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_image_surface_create_from_png (string filename);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern IntPtr cairo_image_surface_create_from_png_stream (string filename);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_image_surface_get_data (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Format cairo_image_surface_get_format (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_image_surface_get_height (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_image_surface_get_stride (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_image_surface_get_width (IntPtr surface);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- [return: MarshalAs (UnmanagedType.U1)]
- internal static extern bool cairo_in_clip (IntPtr cr, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- [return: MarshalAs (UnmanagedType.U1)]
- internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- [return: MarshalAs (UnmanagedType.U1)]
- internal static extern bool cairo_in_stroke (IntPtr cr, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_line_to (IntPtr cr, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mask (IntPtr cr, IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mask_surface (IntPtr cr, IntPtr surface, double x, double y);
-
- #region Matrix
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_init (Matrix matrix, double xx, double yx, double xy, double yy, double x0, double y0);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_init_identity (Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_init_rotate (Matrix matrix, double radians);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_init_scale (Matrix matrix, double sx, double sy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_init_translate (Matrix matrix, double tx, double ty);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_matrix_invert (Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_multiply (Matrix result, Matrix a, Matrix b);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_scale (Matrix matrix, double sx, double sy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_rotate (Matrix matrix, double radians);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_transform_distance (Matrix matrix, ref double dx, ref double dy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_transform_point (Matrix matrix, ref double x, ref double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_matrix_translate (Matrix matrix, double tx, double ty);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_move_to (IntPtr cr, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_new_path (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_new_sub_path (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_paint (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_paint_with_alpha (IntPtr cr, double alpha);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_path_destroy (IntPtr path);
-
- #region Pattern
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_add_color_stop_rgb (IntPtr pattern, double offset, double red, double green, double blue);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_add_color_stop_rgba (IntPtr pattern, double offset, double red, double green, double blue, double alpha);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_get_color_stop_count (IntPtr pattern, out int count);
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_get_color_stop_rgba (IntPtr pattern, int index, out double offset, out double red, out double green, out double blue, out double alpha);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_create_for_surface (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_get_surface (IntPtr pattern, out IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_create_linear (double x0, double y0, double x1, double y1);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_get_linear_points (IntPtr pattern, out double x0, out double y0, out double x1, out double y1);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_get_radial_circles (IntPtr pattern, out double x0, out double y0, out double r0, out double x1, out double y1, out double r1);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_create_rgb (double r, double g, double b);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_create_rgba (double r, double g, double b, double a);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_get_rgba (IntPtr pattern, out double red, out double green, out double blue, out double alpha);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_destroy (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Extend cairo_pattern_get_extend (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Filter cairo_pattern_get_filter (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_get_matrix (IntPtr pattern, Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern PatternType cairo_pattern_get_type (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_reference (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_set_extend (IntPtr pattern, Extend extend);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_set_filter (IntPtr pattern, Filter filter);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pattern_set_matrix (IntPtr pattern, Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_pattern_status (IntPtr pattern);
-
- //mesh pattern
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pattern_create_mesh ();
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_begin_patch (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_end_patch (IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_move_to (IntPtr pattern, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_line_to (IntPtr pattern, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_curve_to (IntPtr pattern, double x1, double y1,
- double x2, double y2, double x3, double y3);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_set_control_point (IntPtr pattern, uint point_num, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_set_corner_color_rgb (IntPtr pattern, uint corner_num,
- double r, double g, double b);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_mesh_pattern_set_corner_color_rgba (IntPtr pattern, uint corner_num,
- double r, double g, double b, double a);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_mesh_pattern_get_patch_count (IntPtr pattern, out uint count);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_mesh_pattern_get_path (IntPtr pattern, uint patch_num);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_mesh_pattern_get_control_point (IntPtr pattern,
- uint patch_num, uint point_num, out double x, out double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_mesh_pattern_get_corner_color_rgba (IntPtr pattern,
- uint patch_num, uint point_num, out double r, out double g, out double b, out double a);
- #endregion
-
- #region PdfSurface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pdf_surface_create (string filename, double width, double height);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern IntPtr cairo_pdf_surface_create_for_stream (string filename, double width, double height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pdf_surface_set_size (IntPtr surface, double x, double y);
- #endregion
-
- #region PostscriptSurface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_ps_surface_create (string filename, double width, double height);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_ps_surface_set_size (IntPtr surface, double x, double y);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_pop_group (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_pop_group_to_source (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_push_group (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_push_group_with_content (IntPtr cr, Content content);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_quartz_surface_create (IntPtr context, bool flipped, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_rectangle (IntPtr cr, double x, double y, double width, double height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_reference (IntPtr cr);
-
- #region Regions
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref Crow.Rectangle rectangle);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_region_copy (IntPtr original);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_region_create ();
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_region_create_rectangle (ref Crow.Rectangle rect);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_region_create_rectangles (IntPtr rects, int count);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_region_destroy (IntPtr region);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_region_get_extents (IntPtr region, out Crow.Rectangle extents);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out Crow.Rectangle rectangle);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern bool cairo_region_is_empty (IntPtr region);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_region_num_rectangles (IntPtr region);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_region_reference (IntPtr region);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_status (IntPtr region);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref Crow.Rectangle rectangle);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_rel_line_to (IntPtr cr, double dx, double dy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_rel_move_to (IntPtr cr, double dx, double dy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_reset_clip (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_restore (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_rotate (IntPtr cr, double angle);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_save (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_scale (IntPtr cr, double sx, double sy);
-
- #region ScaledFont
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_scaled_font_create (IntPtr fontFace, Matrix matrix, Matrix ctm, IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_scaled_font_destroy (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_scaled_font_extents (IntPtr scaled_font, out FontExtents extents);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_scaled_font_get_ctm (IntPtr scaled_font, out Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_scaled_font_get_font_face (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_scaled_font_get_font_matrix (IntPtr scaled_font, out Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_scaled_font_get_font_options (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern FontType cairo_scaled_font_get_type (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_scaled_font_glyph_extents (IntPtr scaled_font, IntPtr glyphs, int num_glyphs, out TextExtents extents);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_scaled_font_reference (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_scaled_font_status (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_scaled_font (IntPtr cr, IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_get_scaled_font (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_scaled_font_text_extents (IntPtr scaled_font, byte[] utf8, out TextExtents extents);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_select_font_face (IntPtr cr, string family, FontSlant slant, FontWeight weight);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_antialias (IntPtr cr, Antialias antialias);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_dash (IntPtr cr, double [] dashes, int ndash, double offset);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_get_dash (IntPtr cr, IntPtr dashes, out double offset);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_get_dash_count (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_fill_rule (IntPtr cr, Crow.Cairo.FillRule fill_rule);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_font_face (IntPtr cr, IntPtr fontFace);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_font_matrix (IntPtr cr, Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_font_options (IntPtr cr, IntPtr options);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_font_size (IntPtr cr, double size);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_line_cap (IntPtr cr, LineCap line_cap);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_line_join (IntPtr cr, LineJoin line_join);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_line_width (IntPtr cr, double width);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_matrix (IntPtr cr, Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_miter_limit (IntPtr cr, double limit);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_operator (IntPtr cr, Crow.Cairo.Operator op);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_source (IntPtr cr, IntPtr pattern);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_source_rgb (IntPtr cr, double red, double green, double blue);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_source_rgba (IntPtr cr, double red, double green, double blue, double alpha);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_source_surface (IntPtr cr, IntPtr surface, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_set_tolerance (IntPtr cr, double tolerance);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_show_glyphs (IntPtr ct, IntPtr glyphs, int num_glyphs);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_show_page (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_show_text (IntPtr cr, string text);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_status (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_status_to_string (Status status);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_stroke (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_stroke_extents (IntPtr cr, out double x1, out double y1, out double x2, out double y2);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_stroke_preserve (IntPtr cr);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_rectangle_list_destroy (IntPtr rectangle_list);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_copy_clip_rectangle_list (IntPtr cr);
-
- #region Surface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_surface_create_similar (IntPtr surface, Crow.Cairo.Content content, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_destroy (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_finish (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_flush (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Content cairo_surface_get_content (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_get_device_offset (IntPtr surface, out double x, out double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_mark_dirty (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_mark_dirty_rectangle (IntPtr surface, int x, int y, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_surface_reference (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_set_device_offset (IntPtr surface, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_set_fallback_resolution (IntPtr surface, double x, double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_surface_status (IntPtr surface);
- #endregion
-
- #region SVG surface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_surface_write_to_png (IntPtr surface, string filename);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern void cairo_surface_write_to_png_stream (IntPtr surface, WriteFunc writeFunc);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_svg_surface_create (string fileName, double width, double height);
-
- //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- //internal static extern IntPtr cairo_svg_surface_create_for_stream (double width, double height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_svg_surface_restrict_to_version (IntPtr surface, SvgVersion version);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_text_extents (IntPtr cr, string text, out TextExtents extents);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_text_path (IntPtr ct, byte[] utf8);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_transform (IntPtr cr, Matrix matrix);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_translate (IntPtr cr, double tx, double ty);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_user_to_device (IntPtr cr, ref double x, ref double y);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_user_to_device_distance (IntPtr cr, ref double dx, ref double dy);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_version ();
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_version_string ();
-
- #region DirectFBSurface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_directfb_surface_create (IntPtr dfb, IntPtr surface);
- #endregion
-
- #region win32 fonts
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_win32_font_face_create_for_logfontw (IntPtr logfontw);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_win32_scaled_font_done_font (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern double cairo_win32_scaled_font_get_metrics_factor (IntPtr scaled_font);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_win32_scaled_font_select_font (IntPtr scaled_font, IntPtr hdc);
- #endregion
-
- #region win32 surface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_win32_surface_create (IntPtr hdc);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_win32_surface_create_with_ddb (IntPtr hdc, Format format, int width, int height);
- #endregion
-
- #region XcbSurface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xcb_surface_create (IntPtr connection, uint drawable, IntPtr visual, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xcb_surface_create_for_bitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_xcb_surface_set_size (IntPtr surface, int width, int height);
- #endregion
-
- #region XlibSurface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xlib_surface_create (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xlib_surface_create_for_bitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_xlib_surface_get_depth (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xlib_surface_get_display (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xlib_surface_get_drawable (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_xlib_surface_get_height (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xlib_surface_get_screen (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_xlib_surface_get_visual (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_xlib_surface_get_width (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_xlib_surface_set_drawable (IntPtr surface, IntPtr drawable, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_xlib_surface_set_size (IntPtr surface, int width, int height);
- #endregion
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_gl_device_set_thread_aware(IntPtr device, int value);
-
- #region GLSurface
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_gl_surface_create (IntPtr device, uint content, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_gl_surface_create_for_texture (IntPtr device, uint content, uint tex, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_gl_surface_set_size (IntPtr surface, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_gl_surface_get_width (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_gl_surface_get_height (IntPtr surface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_gl_surface_swapbuffers (IntPtr surf);
- #endregion
-
- #region GLX Functions
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_glx_device_create (IntPtr dpy, IntPtr gl_ctx);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_glx_device_get_display (IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_glx_device_get_context (IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_gl_surface_create_for_window (IntPtr device, IntPtr window, int width, int height);
- #endregion
-
- #region WGL Fucntions
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_wgl_device_create (IntPtr hglrc);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_wgl_device_get_context (IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_gl_surface_create_for_dc (IntPtr device, IntPtr hdc, int width, int height);
- #endregion
-
- #region EGL Functions
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_egl_device_create (IntPtr dpy, IntPtr gl_ctx);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_gl_surface_create_for_egl (IntPtr device, IntPtr eglSurface, int width, int height);
- #endregion
-
- #region DRM Functions
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_device_get (IntPtr udev_device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_device_get_for_fd (int fd);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_device_default ();
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_drm_device_get_fd (IntPtr cairo_device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_drm_device_throttle (IntPtr cairo_device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_surface_create (IntPtr cairo_device, Format format, int width, int height);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_surface_create_for_name (IntPtr cairo_device, uint name, Format format, int width, int height, int stride);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_surface_create_from_cacheable_image (IntPtr cairo_device, IntPtr imageSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_drm_surface_enable_scan_out (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_surface_get_handle (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_surface_get_name (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Format cairo_drm_surface_get_format (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_drm_surface_get_width (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_drm_surface_get_height (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern int cairo_drm_surface_get_stride (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_drm_surface_map_to_image (IntPtr drmSurface);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_drm_surface_unmap (IntPtr drmSurface, IntPtr imageSurface);
- #endregion
-
- #region Device
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_device_acquire(IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_device_destroy (IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern IntPtr cairo_device_reference (IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern void cairo_device_release(IntPtr device);
-
- [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
- internal static extern Status cairo_device_status(IntPtr device);
- #endregion
- }
-}
\ No newline at end of file
+++ /dev/null
-//
-// Mono.Cairo.Operator.cs
-//
-// Authors: Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// John Luke (john.luke@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2005 John Luke
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum Operator
- {
- Clear,
- Source,
- Over,
- In,
- Out,
- Atop,
-
- Dest,
- DestOver,
- DestIn,
- DestOut,
- DestAtop,
-
- Xor,
- Add,
- Saturate,
- Multiply,
- Screen,
- Overlay,
- Darken,
- Lighten,
-
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.PostscriptSurface.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class PSSurface : Surface
- {
- internal PSSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public PSSurface (string filename, double width, double height)
- : base (NativeMethods.cairo_ps_surface_create (filename, width, height), true)
- {
- }
-
- public void BeginPageSetup ()
- {
- NativeMethods.cairo_ps_surface_dsc_begin_page_setup (Handle);
- }
-
- public void BeginSetup ()
- {
- NativeMethods.cairo_ps_surface_dsc_begin_setup (Handle);
- }
-
- public void DscComment (string comment)
- {
- NativeMethods.cairo_ps_surface_dsc_comment (Handle, comment);
- }
-
- public void SetSize (double width, double height)
- {
- NativeMethods.cairo_ps_surface_set_size (Handle, width, height);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Context.cs
-//
-// Author:
-// Miguel de Icaza (miguel@novell.com)
-//
-// This is an OO wrapper API for the Cairo API.
-//
-// Copyright 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-using Crow.Cairo;
-
-namespace Crow.Cairo {
-
- public class Path : IDisposable
- {
- IntPtr handle = IntPtr.Zero;
-
- internal Path (IntPtr handle)
- {
- this.handle = handle;
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- ~Path ()
- {
- Dispose (false);
- }
-
- public IntPtr Handle { get { return handle; } }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<Path> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_path_destroy (handle);
- handle = IntPtr.Zero;
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Pattern.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace Crow.Cairo {
-
- public class Pattern : IDisposable
- {
- [Obsolete]
- protected IntPtr pattern = IntPtr.Zero;
-
- public static Pattern Lookup (IntPtr pattern, bool owner)
- {
- if (pattern == IntPtr.Zero)
- return null;
-
- PatternType pt = NativeMethods.cairo_pattern_get_type (pattern);
- switch (pt) {
- case PatternType.Solid:
- return new SolidPattern (pattern, owner);
- case PatternType.Surface:
- return new SurfacePattern (pattern, owner);
- case PatternType.Linear:
- return new LinearGradient (pattern, owner);
- case PatternType.Radial:
- return new RadialGradient (pattern, owner);
- default:
- return new Pattern (pattern, owner);
- }
- }
-
- [Obsolete]
- protected Pattern ()
- {
- }
-
- internal Pattern (IntPtr handle, bool owned)
- {
- Handle = handle;
- if (!owned)
- NativeMethods.cairo_pattern_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- ~Pattern ()
- {
- Dispose (false);
- }
-
- [Obsolete ("Use the SurfacePattern constructor")]
- public Pattern (Surface surface)
- : this ( NativeMethods.cairo_pattern_create_for_surface (surface.Handle), true)
- {
- }
-
- [Obsolete]
- protected void Reference ()
- {
- NativeMethods.cairo_pattern_reference (pattern);
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<Pattern> (Handle, disposing);
-
- if (!disposing|| Handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_pattern_destroy (Handle);
- Handle = IntPtr.Zero;
- }
-
- [Obsolete ("Use Dispose()")]
- public void Destroy ()
- {
- Dispose ();
- }
-
- public Status Status
- {
- get { return NativeMethods.cairo_pattern_status (Handle); }
- }
-
- public Extend Extend
- {
- get { return NativeMethods.cairo_pattern_get_extend (Handle); }
- set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
- }
-
- public Matrix Matrix {
- set {
- NativeMethods.cairo_pattern_set_matrix (Handle, value);
- }
-
- get {
- Matrix m = new Matrix ();
- NativeMethods.cairo_pattern_get_matrix (Handle, m);
- return m;
- }
- }
-
-#pragma warning disable 612
- public IntPtr Handle {
- get { return pattern; }
- private set { pattern = value; }
- }
-#pragma warning restore 612
-
- [Obsolete]
- public IntPtr Pointer {
- get { return pattern; }
- }
-
- public PatternType PatternType {
- get { return NativeMethods.cairo_pattern_get_type (Handle); }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.PatternType.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
-
- public enum PatternType
- {
- Solid,
- Surface,
- Linear,
- Radial,
- Mesh,
- RasterSource
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.PdfSurface.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class PdfSurface : Surface
- {
- internal PdfSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public PdfSurface (string filename, double width, double height)
- : base (NativeMethods.cairo_pdf_surface_create (filename, width, height), true)
- {
- }
-
- public void SetSize (double width, double height)
- {
- NativeMethods.cairo_pdf_surface_set_size (Handle, width, height);
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.Context.cs
-//
-// Author:
-// Duncan Mak (duncan@ximian.com)
-// Miguel de Icaza (miguel@novell.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell Inc, 2003.
-//
-// This is an OO wrapper API for the Cairo API.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Crow.Cairo {
- public struct Point
- {
- public Point (int x, int y)
- {
- this.x = x;
- this.y = y;
- }
-
- int x, y;
- public int X {
- get { return x; }
- set { x = value; }
- }
-
- public int Y {
- get { return y; }
- set { y = value; }
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Context.cs
-//
-// Author:
-// Duncan Mak (duncan@ximian.com)
-// Miguel de Icaza (miguel@novell.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell Inc, 2003.
-//
-// This is an OO wrapper API for the Cairo API.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Crow.Cairo {
-
- public struct PointD
- {
- public PointD (double x, double y)
- {
- this.x = x;
- this.y = y;
- }
-
- double x, y;
- public double X {
- get { return x; }
- set { x = value; }
- }
-
- public double Y {
- get { return y; }
- set { y = value; }
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Pattern.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class RadialGradient : Gradient
- {
- internal RadialGradient (IntPtr handle, bool owned) : base (handle, owned)
- {
- }
-
- public RadialGradient (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1)
- : base (NativeMethods.cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1), true)
- {
- }
- }
-}
-
+++ /dev/null
-// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo
-{
- [StructLayout(LayoutKind.Sequential)]
- public struct RectangleList {
- public Status Status;
- public IntPtr Rectangles;
- public int NumRectangles;
- }
-
- public enum RegionOverlap {
- In,
- Out,
- Part,
- }
-
- public class Region : IDisposable {
-
- IntPtr handle;
- public IntPtr Handle {
- get { return handle; }
- }
-
- [Obsolete]
- public Region (IntPtr handle) : this (handle, false) {}
-
- public Region (IntPtr handle, bool owned)
- {
- this.handle = handle;
- if (!owned)
- NativeMethods.cairo_region_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- public Region () : this (NativeMethods.cairo_region_create () , true)
- {
- }
-
- public Region (Crow.Rectangle rect)
- {
- handle = NativeMethods.cairo_region_create_rectangle (ref rect);
- }
-
- public Region (RectangleList rects)
- {
- handle = NativeMethods.cairo_region_create_rectangles (rects.Rectangles, rects.NumRectangles);
- }
-
- public Region Copy ()
- {
- return new Region (NativeMethods.cairo_region_copy (Handle), true);
- }
-
- #region IDisposable
- ~Region ()
- {
- Dispose (false);
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<Region> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_region_destroy (Handle);
- handle = IntPtr.Zero;
- }
- #endregion
-
- public override bool Equals (object obj)
- {
- return (obj is Region) && NativeMethods.cairo_region_equal (Handle, (obj as Region).Handle);
- }
-
- public override int GetHashCode ()
- {
- return Handle.GetHashCode ();
- }
-
- public Status Status {
- get { return NativeMethods.cairo_region_status (Handle); }
- }
-
- public Crow.Rectangle Extents {
- get {
- Crow.Rectangle result;
- NativeMethods.cairo_region_get_extents (Handle, out result);
- return result;
- }
- }
-
- public int NumRectangles {
- get { return NativeMethods.cairo_region_num_rectangles (Handle); }
- }
-
- public Crow.Rectangle GetRectangle (int nth)
- {
- Crow.Rectangle val;
- NativeMethods.cairo_region_get_rectangle (Handle, nth, out val);
- return val;
- }
-
- public bool IsEmpty {
- get { return NativeMethods.cairo_region_is_empty (Handle); }
- }
-
- public RegionOverlap Contains (Crow.Rectangle rectangle)
- {
- return NativeMethods.cairo_region_contains_rectangle (Handle, ref rectangle);
- }
-
- public bool Contains (int x, int y)
- {
- return NativeMethods.cairo_region_contains_point (Handle, x, y);
- }
-
- public void Translate (int dx, int dy)
- {
- NativeMethods.cairo_region_translate (Handle, dx, dy);
- }
-
- public Status Subtract (Region other)
- {
- return NativeMethods.cairo_region_subtract (Handle, other.Handle);
- }
-
- public Status SubtractRectangle (Crow.Rectangle rectangle)
- {
- return NativeMethods.cairo_region_subtract_rectangle (Handle, ref rectangle);
- }
-
- public Status Intersect (Region other)
- {
- return NativeMethods.cairo_region_intersect (Handle, other.Handle);
- }
-
- public Status IntersectRectangle (Crow.Rectangle rectangle)
- {
- return NativeMethods.cairo_region_intersect_rectangle (Handle, ref rectangle);
- }
-
- public Status Union (Region other)
- {
- return NativeMethods.cairo_region_union (Handle, other.Handle);
- }
-
- public Status UnionRectangle (Crow.Rectangle rectangle)
- {
- return NativeMethods.cairo_region_union_rectangle (Handle, ref rectangle);
- }
-
- public Status Xor (Region other)
- {
- return NativeMethods.cairo_region_xor (Handle, other.Handle);
- }
-
- public Status XorRectangle (Crow.Rectangle rectangle)
- {
- return NativeMethods.cairo_region_xor_rectangle (Handle, ref rectangle);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.ScaledFont.cs
-//
-// (c) 2008 Jordi Mas i Hernandez (jordimash@gmail.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo {
-
- public class ScaledFont : IDisposable
- {
- protected IntPtr handle = IntPtr.Zero;
-
- internal ScaledFont (IntPtr handle, bool owner)
- {
- this.handle = handle;
- if (!owner)
- NativeMethods.cairo_scaled_font_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- public ScaledFont (FontFace fontFace, Matrix matrix, Matrix ctm, FontOptions options)
- : this (NativeMethods.cairo_scaled_font_create (fontFace.Handle, matrix, ctm, options.Handle), true)
- {
- }
-
- ~ScaledFont ()
- {
- Dispose (false);
- }
-
- public IntPtr Handle {
- get {
- return handle;
- }
- }
-
- public FontExtents FontExtents {
- get {
- FontExtents extents;
- NativeMethods.cairo_scaled_font_extents (handle, out extents);
- return extents;
- }
- }
-
- public Matrix FontMatrix {
- get {
- Matrix m;
- NativeMethods.cairo_scaled_font_get_font_matrix (handle, out m);
- return m;
- }
- }
-
- public FontType FontType {
- get {
- return NativeMethods.cairo_scaled_font_get_type (handle);
- }
- }
-
- public TextExtents GlyphExtents (Glyph[] glyphs)
- {
- IntPtr ptr = Context.FromGlyphToUnManagedMemory (glyphs);
- TextExtents extents;
-
- NativeMethods.cairo_scaled_font_glyph_extents (handle, ptr, glyphs.Length, out extents);
-
- Marshal.FreeHGlobal (ptr);
- return extents;
- }
-
- public Status Status
- {
- get { return NativeMethods.cairo_scaled_font_status (handle); }
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<ScaledFont> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_scaled_font_destroy (handle);
- handle = IntPtr.Zero;
- }
-
- [Obsolete]
- protected void Reference ()
- {
- NativeMethods.cairo_scaled_font_reference (handle);
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.Pattern.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using Color = Crow.Color;
-namespace Crow.Cairo {
-
- public class SolidPattern : Pattern
- {
- internal SolidPattern (IntPtr handle, bool owned) : base (handle, owned)
- {
- }
-
- public SolidPattern (Color color)
- : base (NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A), true)
- {
- }
-
- public SolidPattern (double r, double g, double b)
- : base (NativeMethods.cairo_pattern_create_rgb (r, g, b), true)
- {
- }
-
- public SolidPattern (double r, double g, double b, double a)
- : base (NativeMethods.cairo_pattern_create_rgba (r, g, b, a), true)
- {
- }
-
- public SolidPattern (Color color, bool solid)
- : base (solid
- ? NativeMethods.cairo_pattern_create_rgb (color.R, color.G, color.B)
- : NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A),
- true)
- {
- }
-
- public Color Color {
- get {
- double red, green, blue, alpha;
- NativeMethods.cairo_pattern_get_rgba (Handle, out red, out green, out blue, out alpha);
- return new Color (red, green, blue, alpha);
- }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.Status.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// John Luke (john.luke@gmail.com)
-// Alp Toker (alp@atoker.com)
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// Copyright (C) 2005 John Luke
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum Status
- {
- Success = 0,
- NoMemory,
- InvalidRestore,
- InvalidPopGroup,
- NoCurrentPoint,
- InvalidMatrix,
- InvalidStatus,
- NullPointer,
- InvalidString,
- InvalidPathData,
- ReadError,
- WriteError,
- SurfaceFinished,
- SurfaceTypeMismatch,
- PatternTypeMismatch,
- InvalidContent,
- InvalidFormat,
- InvalidVisual,
- FileNotFound,
- InvalidDash,
- InvalidDscComment,
- InvalidIndex,
- ClipNotRepresentable,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Cairo.cs
-//
-// Authors:
-// John Luke (john.luke@gmail.com)
-//
-// Copyright (C) John Luke 2005
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo
-{
-
- public enum SubpixelOrder
- {
- Default,
- Rgb,
- Bgr,
- Vrgb,
- Vbgr,
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Surface.cs
-//
-// Authors:
-// Duncan Mak
-// Miguel de Icaza.
-// Alp Toker
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell, Inc. 2003.
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace Crow.Cairo {
-
- public class Surface : IDisposable
- {
- IntPtr handle = IntPtr.Zero;
-
- [Obsolete]
- protected Surface()
- {
- }
-
- [Obsolete]
- protected Surface (IntPtr ptr) : this (ptr, true)
- {
- }
-
- protected Surface (IntPtr handle, bool owner)
- {
- this.handle = handle;
- if (!owner)
- NativeMethods.cairo_surface_reference (handle);
- if (CairoDebug.Enabled)
- CairoDebug.OnAllocated (handle);
- }
-
- public static Surface Lookup (IntPtr surface, bool owned)
- {
- SurfaceType st = NativeMethods.cairo_surface_get_type (surface);
- switch (st) {
- case SurfaceType.Image:
- return new ImageSurface (surface, owned);
- case SurfaceType.Xlib:
- return new XlibSurface (surface, owned);
- case SurfaceType.Xcb:
- return new XcbSurface (surface, owned);
- case SurfaceType.Glitz:
- return new GlitzSurface (surface, owned);
- case SurfaceType.Win32:
- return new Win32Surface (surface, owned);
- case SurfaceType.Pdf:
- return new PdfSurface (surface, owned);
- case SurfaceType.PS:
- return new PSSurface (surface, owned);
- case SurfaceType.DirectFB:
- return new DirectFBSurface (surface, owned);
- case SurfaceType.Svg:
- return new SvgSurface (surface, owned);
- case SurfaceType.GL:
- return new GLSurface (surface, owned);
- default:
- return new Surface (surface, owned);
- }
- }
-
- [Obsolete ("Use an ImageSurface constructor instead.")]
- public static Crow.Cairo.Surface CreateForImage (
- ref byte[] data, Crow.Cairo.Format format, int width, int height, int stride)
- {
- IntPtr p = NativeMethods.cairo_image_surface_create_for_data (
- data, format, width, height, stride);
-
- return new Crow.Cairo.Surface (p, true);
- }
-
- [Obsolete ("Use an ImageSurface constructor instead.")]
- public static Crow.Cairo.Surface CreateForImage (
- Crow.Cairo.Format format, int width, int height)
- {
- IntPtr p = NativeMethods.cairo_image_surface_create (
- format, width, height);
-
- return new Crow.Cairo.Surface (p, true);
- }
-
-
- public Crow.Cairo.Surface CreateSimilar (
- Crow.Cairo.Content content, int width, int height)
- {
- IntPtr p = NativeMethods.cairo_surface_create_similar (
- this.Handle, content, width, height);
-
- return Surface.Lookup(p, true);
- }
-
- ~Surface ()
- {
- Dispose (false);
- }
-
- //[Obsolete ("Use Context.SetSource() followed by Context.Paint()")]
- public void Show (Context gr, double x, double y)
- {
- NativeMethods.cairo_set_source_surface (gr.Handle, handle, x, y);
- NativeMethods.cairo_paint (gr.Handle);
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (!disposing || CairoDebug.Enabled)
- CairoDebug.OnDisposed<Surface> (handle, disposing);
-
- if (!disposing|| handle == IntPtr.Zero)
- return;
-
- NativeMethods.cairo_surface_destroy (handle);
- handle = IntPtr.Zero;
- }
- public virtual void SetSize (int width, int height) {
- }
-
- public Status Finish ()
- {
- NativeMethods.cairo_surface_finish (handle);
- return Status;
- }
-
- public void Flush ()
- {
- NativeMethods.cairo_surface_flush (handle);
- }
-
- public void MarkDirty ()
- {
- NativeMethods.cairo_surface_mark_dirty (Handle);
- }
-
- public void MarkDirty (Crow.Rectangle rectangle)
- {
- NativeMethods.cairo_surface_mark_dirty_rectangle (Handle, rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
- }
-
- public IntPtr Handle {
- get {
- return handle;
- }
- }
-
- public PointD DeviceOffset {
- get {
- double x, y;
- NativeMethods.cairo_surface_get_device_offset (handle, out x, out y);
- return new PointD (x, y);
- }
-
- set {
- NativeMethods.cairo_surface_set_device_offset (handle, value.X, value.Y);
- }
- }
-
- [Obsolete ("Use Dispose()")]
- public void Destroy()
- {
- Dispose ();
- }
-
- public void SetFallbackResolution (double x, double y)
- {
- NativeMethods.cairo_surface_set_fallback_resolution (handle, x, y);
- }
-
- public void WriteToPng (string filename)
- {
- NativeMethods.cairo_surface_write_to_png (handle, filename);
- }
-
- [Obsolete ("Use Handle instead.")]
- public IntPtr Pointer {
- get {
- return handle;
- }
- }
-
- public Status Status {
- get { return NativeMethods.cairo_surface_status (handle); }
- }
-
- public Content Content {
- get { return NativeMethods.cairo_surface_get_content (handle); }
- }
-
- public SurfaceType SurfaceType {
- get { return NativeMethods.cairo_surface_get_type (handle); }
- }
-
- public uint ReferenceCount {
- get { return NativeMethods.cairo_surface_get_reference_count (handle); }
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Pattern.cs
-//
-// Author: Jordi Mas (jordi@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-// (C) Ximian Inc, 2004.
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class SurfacePattern : Pattern
- {
- internal SurfacePattern (IntPtr handle, bool owned) : base (handle, owned)
- {
- }
-
- public SurfacePattern (Surface surface)
- : base (NativeMethods.cairo_pattern_create_for_surface (surface.Handle), true)
- {
- }
-
- //no idea why this is here, the base one is identical, but we can't remove it now
- public new Extend Extend {
- set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
- get { return NativeMethods.cairo_pattern_get_extend (Handle); }
- }
-
- public Filter Filter {
- set { NativeMethods.cairo_pattern_set_filter (Handle, value); }
- get { return NativeMethods.cairo_pattern_get_filter (Handle); }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.SurfaceType.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
-
- public enum SurfaceType
- {
- Image,
- Pdf,
- PS,
- Xlib,
- Xcb,
- Glitz,
- Quartz,
- Win32,
- BeOS,
- DirectFB,
- Svg,
- OS2,
- Win32Printing,
- QuartzImage,
- Script,
- Qt,
- Recording,
- VG,
- GL,
- Drm,
- Tee,
- Xml,
- Skia,
- SubSurface
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.SvgSurface.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class SvgSurface : Surface
- {
- internal SvgSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public SvgSurface (string filename, double width, double height)
- : base (NativeMethods.cairo_svg_surface_create (filename, width, height), true)
- {
- }
-
- public void RestrictToVersion (SvgVersion version)
- {
- NativeMethods.cairo_svg_surface_restrict_to_version (Handle, version);
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.SvgVersion.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
-
- public enum SvgVersion
- {
- // FIXME: yuck
- OnePointOne = 0,
- OnePointTwo,
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.TextExtents.cs
-//
-// Authors:
-// Duncan Mak (duncan@ximian.com)
-// Hisham Mardam Bey (hisham.mardambey@gmail.com)
-//
-// (C) Ximian, Inc. 2003
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.Cairo
-{
- [StructLayout (LayoutKind.Sequential)]
- public struct TextExtents
- {
- double xbearing;
- double ybearing;
- double width;
- double height;
- double xadvance;
- double yadvance;
-
- public double XBearing {
- get { return xbearing; }
- set { xbearing = value; }
- }
-
- public double YBearing {
- get { return ybearing; }
- set { ybearing = value; }
- }
-
- public double Width {
- get { return width; }
- set { width = value; }
- }
-
- public double Height {
- get { return height; }
- set { height = value; }
- }
-
- public double XAdvance {
- get { return xadvance; }
- set { xadvance = value; }
- }
-
- public double YAdvance {
- get { return yadvance; }
- set { yadvance = value; }
- }
-
- public override bool Equals (object obj)
- {
- if (obj is TextExtents)
- return this == (TextExtents)obj;
- return false;
- }
-
- public override int GetHashCode ()
- {
- return (int)XBearing ^ (int)YBearing ^ (int)Width ^ (int)Height ^ (int)XAdvance ^ (int)YAdvance;
- }
-
- public static bool operator == (TextExtents extents, TextExtents other)
- {
- return extents.XBearing == other.XBearing && extents.YBearing == other.YBearing && extents.Width == other.Width && extents.Height == other.Height && extents.XAdvance == other.XAdvance && extents.YAdvance == other.YAdvance;
- }
-
- public static bool operator != (TextExtents extents, TextExtents other)
- {
- return !(extents == other);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.Device.cs
-//
-// Authors:
-// JP Bruyère (jp_bruyere@hotmail.com)
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2016 JP Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-
-namespace Crow.Cairo
-{
- public class WGLDevice : Device
- {
- public WGLDevice (IntPtr hglrc) : base (NativeMethods.cairo_wgl_device_create (hglrc), true)
- {
- }
-
- public IntPtr Context {
- get { return NativeMethods.cairo_wgl_device_get_context (Handle); }
- }
- }
-}
-
+++ /dev/null
-//
-// Mono.Cairo.Win32Surface.cs
-//
-// Authors:
-// John Luke
-//
-// (C) John Luke, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class Win32Surface : Surface
- {
- internal Win32Surface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public Win32Surface (IntPtr hdc)
- : base (NativeMethods.cairo_win32_surface_create (hdc), true)
- {
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.XcbSurface.cs
-//
-// Authors:
-// Alp Toker
-//
-// (C) Alp Toker, 2006.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
- public class XcbSurface : Surface
- {
- internal XcbSurface (IntPtr handle, bool owns) : base (handle, owns)
- {
- }
-
- public XcbSurface (IntPtr connection, uint drawable, IntPtr visual, int width, int height)
- : base (NativeMethods.cairo_xcb_surface_create (connection, drawable, visual, width, height), true)
- {
- }
-
- public static XcbSurface FromBitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height)
- {
- IntPtr ptr = NativeMethods.cairo_xcb_surface_create_for_bitmap (connection, bitmap, screen, width, height);
- return new XcbSurface (ptr, true);
- }
- public override void SetSize (int width, int height)
- {
- NativeMethods.cairo_xcb_surface_set_size (Handle, width, height);
- }
- }
-}
+++ /dev/null
-//
-// Mono.Cairo.XlibSurface.cs
-//
-// Authors:
-// Duncan Mak
-// Miguel de Icaza.
-//
-// (C) Ximian Inc, 2003.
-// (C) Novell, Inc. 2003.
-//
-// This is an OO wrapper API for the Cairo API
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Crow.Cairo {
-
- public class XlibSurface : Surface
- {
- public XlibSurface (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height)
- : base (NativeMethods.cairo_xlib_surface_create (display, drawable, visual, width, height), true)
- {
- }
-
- public XlibSurface (IntPtr ptr, bool own) : base (ptr, own)
- {
- }
-
- public static XlibSurface FromBitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height)
- {
- IntPtr ptr = NativeMethods.cairo_xlib_surface_create_for_bitmap (display, bitmap, screen, width, height);
- return new XlibSurface(ptr, true);
- }
-
- public void SetDrawable (IntPtr drawable, int width, int height)
- {
- NativeMethods.cairo_xlib_surface_set_drawable (Handle, drawable, width, height);
- }
-
- public void SetSize (int width, int height)
- {
- NativeMethods.cairo_xlib_surface_set_size (Handle, width, height);
- }
-
- public int Depth {
- get { return NativeMethods.cairo_xlib_surface_get_depth (Handle); }
- }
-
- public IntPtr Display {
- get { return NativeMethods.cairo_xlib_surface_get_display (Handle); }
- }
-
- public IntPtr Drawable {
- get { return NativeMethods.cairo_xlib_surface_get_drawable (Handle); }
- }
-
- public int Height {
- get { return NativeMethods.cairo_xlib_surface_get_height (Handle); }
- }
-
- public IntPtr Screen {
- get { return NativeMethods.cairo_xlib_surface_get_screen (Handle); }
- }
-
- public IntPtr Visual {
- get { return NativeMethods.cairo_xlib_surface_get_visual (Handle); }
- }
-
- public int Width {
- get { return NativeMethods.cairo_xlib_surface_get_width (Handle); }
- }
-
- }
-}
namespace Crow
{
- public class MouseCursorChangedEventArgs : EventArgs
- {
- public XCursor NewCursor;
- public MouseCursorChangedEventArgs (XCursor newCursor) : base()
- {
- NewCursor = newCursor;
- }
- }
+ //public class MouseCursorChangedEventArgs : EventArgs
+ //{
+ // public XCursor NewCursor;
+ // public MouseCursorChangedEventArgs (XCursor newCursor) : base()
+ // {
+ // NewCursor = newCursor;
+ // }
+ //}
}
using System;
using System.IO;
-using Crow.Cairo;
+using vkvg;
using System.Collections.Generic;
namespace Crow
public double LengthD {
get { return Math.Sqrt (Math.Pow (_x, 2) + Math.Pow (_y, 2)); }
}
- public static implicit operator Crow.Cairo.Point(Point p)
+ //public static implicit operator Crow.Cairo.Point(Point p)
+ //{
+ // return new Crow.Cairo.Point(p.X, p.Y);
+ //}
+ //public static implicit operator Crow.Cairo.PointD(Point p)
+ //{
+ // return new Crow.Cairo.PointD(p.X, p.Y);
+ //}
+ public static implicit operator Point(int i)
{
- return new Crow.Cairo.Point(p.X, p.Y);
+ return new Point(i, i);
}
- public static implicit operator Crow.Cairo.PointD(Point p)
+ public static implicit operator Point(vkvg.PointD p)
{
- return new Crow.Cairo.PointD(p.X, p.Y);
+ return new Point((int)p.X, (int)p.Y);
}
- public static implicit operator Point(int i)
+ public static implicit operator vkvg.PointD(Point p)
{
- return new Point(i, i);
+ return new vkvg.PointD(p.X, p.Y);
}
public static Point operator /(Point p, int d)
{
// THE SOFTWARE.
using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml.Serialization;
using System.Runtime.InteropServices;
namespace Crow
// THE SOFTWARE.
using System.Collections.Generic;
-using Crow.Cairo;
+using vkvg;
namespace Crow {
public class Rectangles
using System.Xml.Serialization;
using System.Reflection;
using System.Diagnostics;
-using Crow.Cairo;
+using vkvg;
public override void SetAsSource (Context ctx, Rectangle bounds = default(Rectangle))
{
- ctx.SetSourceRGBA (color.R, color.G, color.B, color.A);
+ ctx.SetSourceColor (color);
}
public static object Parse(string s)
{
using System;
using System.IO;
-using Crow.Cairo;
+using vkvg;
namespace Crow
{
widthRatio = heightRatio;
}
- using (ImageSurface tmp = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height)) {
- using (Context gr = new Context (tmp)) {
- gr.Translate (bounds.Left, bounds.Top);
- gr.Scale (widthRatio, heightRatio);
- gr.Translate ((bounds.Width/widthRatio - Dimensions.Width)/2, (bounds.Height/heightRatio - Dimensions.Height)/2);
+ //using (ImageSurface tmp = new ImageSurface (Format.Argb32, bounds.Width, bounds.Height)) {
+ // using (Context gr = new Context (tmp)) {
+ // gr.Translate (bounds.Left, bounds.Top);
+ // gr.Scale (widthRatio, heightRatio);
+ // gr.Translate ((bounds.Width/widthRatio - Dimensions.Width)/2, (bounds.Height/heightRatio - Dimensions.Height)/2);
- hSVG.RenderCairo (gr);
- }
- ctx.SetSource (tmp);
- }
+ // hSVG.RenderCairo (gr);
+ // }
+ // ctx.SetSource (tmp);
+ //}
}
#endregion
+++ /dev/null
-//
-// IBackend.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-
-namespace Crow
-{
- public enum MouseCursors
- {
- Default,
- Cross,
- Arrow,
- Text,
- SW,
- SE,
- NW,
- NE,
- N,
- S,
- V,
- H,
- MaxEnum,
- }
- public interface IBackend
- {
- void Init(Interface iFace);
- void CleanUp();
- void Flush();
- void ProcessEvents();
-
- void SetCursor (MouseCursors newCur);
- void SetCursorPosition (int x, int y);
-
- bool IsDown (Key key);
- bool Shift { get; }
- bool Ctrl { get; }
- bool Alt { get; }
- }
-}
-
+++ /dev/null
-//
-// IKeyboard.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-
-namespace Crow
-{
- public interface IKeyboard
- {
- event EventHandler<KeyEventArgs> KeyDown;
- event EventHandler<KeyEventArgs> KeyUp;
- event EventHandler<KeyPressEventArgs> KeyPress;
-
-
- void HandleEvent (uint Keycode, bool pressed);
-
- bool IsDown (Key key);
- bool Shift { get; }
- bool Ctrl { get; }
- bool Alt { get; }
-
- void Destroy ();
- }
-}
-
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with the cursor.
- /// </summary>
- public static class Cursor
- {
- /// <summary>
- /// Loads the specified cursor resource from a set of pre-defined cursors (see <see cref="CursorName"/>).
- /// </summary>
- /// <param name="cursorName">An identifier for one of the pre-defined cursors.</param>
- /// <returns>
- /// If the function succeeds, the return value is the handle to the newly loaded cursor.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static IntPtr LoadCursor(CursorName cursorName)
- => LoadCursor(IntPtr.Zero, (int)cursorName);
-
- /// <summary>
- /// Loads the specified cursor resource from the executable (.EXE) file associated
- /// with an application instance.
- /// </summary>
- /// <param name="moduleInstance">
- /// A handle to an instance of the module whose executable file contains the cursor to be loaded.
- /// </param>
- /// <param name="cursorName">The name of the cursor resource to be loaded.</param>
- /// <returns>
- /// If the function succeeds, the return value is the handle to the newly loaded cursor.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern IntPtr LoadCursor
- (
- [In] IntPtr moduleInstance,
- [In] string cursorName
- );
-
- /// <summary>
- /// Loads the specified cursor resource from a set of pre-defined cursors (see <see cref="CursorName"/>).
- /// </summary>
- /// <param name="moduleInstance">Usually a handle to an instance, but null in this overload.</param>
- /// <param name="cursorIdentifier">
- /// An integer consisting of the resource identifier in the low-order word and zero in the high-order word.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is the handle to the newly loaded cursor.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- private static extern IntPtr LoadCursor
- (
- [In] [Optional] IntPtr moduleInstance,
- [In] int cursorIdentifier
- );
-
- /// <summary>
- /// Confines the cursor to a rectangular area on the screen. If a subsequent cursor position
- /// (set by the <see cref="SetCursorPos(int, int)"/> function or the mouse) lies outside the rectangle,
- /// the system automatically adjusts the position to keep the cursor inside the rectangular area.
- /// </summary>
- /// <param name="rect">
- /// A pointer to the structure that contains the screen coordinates of the upper-left and lower-right
- /// corners of the confining rectangle. If this parameter is null,
- /// the cursor is free to move anywhere on the screen.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ClipCursor([In] [Optional] ref Rect rect);
-
- /// <summary>
- /// Confines the cursor to a rectangular area on the screen. If a subsequent cursor position
- /// (set by the <see cref="SetCursorPos(int, int)"/> function or the mouse) lies outside the rectangle,
- /// the system automatically adjusts the position to keep the cursor inside the rectangular area.
- /// </summary>
- /// <param name="rect">
- /// A pointer to the structure that contains the screen coordinates of the upper-left and lower-right
- /// corners of the confining rectangle. If this parameter is null,
- /// the cursor is free to move anywhere on the screen.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ClipCursor([In] [Optional] IntPtr rect);
-
- /// <summary>
- /// Displays or hides the cursor.
- /// </summary>
- /// <param name="show">
- /// If true, the display count is incremented by one. If false, the display count is decremented by one.
- /// </param>
- /// <returns>The return value specifies the new display counter.</returns>
- [DllImport(Library)]
- public static extern int ShowCursor([In] bool show);
-
- /// <summary>
- /// Retrieves the cursor's position, in screen coordinates.
- /// </summary>
- /// <param name="point">
- /// A pointer to a <see cref="Point"/> structure that receives the screen coordinates of the cursor.
- /// </param>
- /// <returns>
- /// Returns true if successful or false otherwise.<para/>
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [SuppressUnmanagedCodeSecurity]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetCursorPos([Out] out Point point);
-
- /// <summary>
- /// Moves the cursor to the specified screen coordinates. If the new coordinates are not within the
- /// screen rectangle set by the most recent <see cref="ClipCursor(ref Rect)"/> function call, the system
- /// automatically adjusts the coordinates so that the cursor stays within the rectangle.
- /// </summary>
- /// <param name="x">The new x-coordinate of the cursor, in screen coordinates.</param>
- /// <param name="y">The new y-coordinate of the cursor, in screen coordinates.</param>
- /// <returns>
- /// Returns true if successful or false otherwise.<para/>
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetCursorPos([In] int x, [In] int y);
-
- /// <summary>
- /// Retrieves a handle to the current cursor.
- /// </summary>
- /// <returns>
- /// The return value is the handle to the current cursor. If there is
- /// no cursor, the return value is null.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr GetCursor();
-
- /// <summary>
- /// Sets the cursor shape.
- /// </summary>
- /// <param name="cursor">
- /// A handle to the cursor. The cursor must have been created by the CreateCursor function or loaded by
- /// the <see cref="LoadCursor(IntPtr, string)"/> or LoadImage function. If this parameter is null,
- /// the cursor is removed from the screen.
- /// </param>
- /// <returns>
- /// The return value is the handle to the previous cursor, if there was one.
- /// If there was no previous cursor, the return value is null.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr SetCursor([In] [Optional] IntPtr cursor);
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// An application-defined callback function that processes <see cref="WindowMessage.Timer"/> messages. TimerProc
- /// is a placeholder for the application-defined function name.
- /// </summary>
- /// <param name="hwnd">A handle to the window associated with the timer. </param>
- /// <param name="msg">The <see cref="WindowMessage.Timer"/> message.</param>
- /// <param name="timerID">The timer's identifier.</param>
- /// <param name="elapsedTime">
- /// The number of milliseconds that have elapsed since the system was started. This is the
- /// value returned by the GetTickCount function.
- /// </param>
- [UnmanagedFunctionPointer(CallingConvention.Winapi)]
- public delegate void TimerProc
- (
- [In] IntPtr hwnd,
- [In] WindowMessage msg,
- [In] UIntPtr timerID,
- [In] uint elapsedTime
- );
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// An application-defined function that processes messages sent to a window. WindowProc is a placeholder for the
- /// application-defined function name.
- /// </summary>
- /// <param name="hwnd">A handle to the window.</param>
- /// <param name="msg">The message.</param>
- /// <param name="wparam">
- /// Additional message information. The contents of this parameter depend on the value of the
- /// <paramref name="msg"/> parameter.
- /// </param>
- /// <param name="lparam">
- /// Additional message information. The contents of this parameter depend on the value of the
- /// <paramref name="msg"/> parameter.
- /// </param>
- /// <returns>The return value is the result of the message processing and depends on the message sent.</returns>
- [SuppressUnmanagedCodeSecurity]
- [UnmanagedFunctionPointer(CallingConvention.Winapi)]
- public delegate IntPtr WindowProc
- (
- [In] IntPtr hwnd,
- [In] WindowMessage msg,
- [In] IntPtr wparam,
- [In] IntPtr lparam
- );
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with devices.
- /// </summary>
- public static class Device
- {
- /// <summary>
- /// Registers the device or type of device for which a window will receive notifications.
- /// </summary>
- /// <param name="recipient">
- /// A handle to the window or service that will receive device events for the devices specified in the
- /// <paramref name="notificationFilter"/> parameter. The same window handle can be used in multiple calls
- /// to <see cref="RegisterDeviceNotification(IntPtr, IntPtr, DeviceNotificationEnum)"/>.<para/>
- /// Services can specify either a window handle or service status handle.
- /// </param>
- /// <param name="notificationFilter">
- /// A pointer to a block of data that specifies the type of device for which notifications should be sent.
- /// This block always begins with the DEV_BROADCAST_HDR structure. The data following this header is
- /// dependent on the value of the dbch_devicetype member, which can be
- /// <see cref="DeviceBroadcastType.DeviceInterface"/> or <see cref="DeviceBroadcastType.Handle"/>.<para/>
- /// For more information, see the Remarks section in the official documentation.
- /// </param>
- /// <param name="flags">Specifies additional information for this function call.</param>
- /// <returns>
- /// If the function succeeds, the return value is a device notification handle.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.<para/>
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern IntPtr RegisterDeviceNotification
- (
- [In] IntPtr recipient,
- [In] IntPtr notificationFilter,
- [In] DeviceNotificationEnum flags
- );
-
- /// <summary>
- /// Closes the specified device notification handle.
- /// </summary>
- /// <param name="handle">
- /// Device notification handle returned by the
- /// <see cref="RegisterDeviceNotification(IntPtr, IntPtr, DeviceNotificationEnum)"/> function.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.
- /// If the function fails, the return value is false.<para/>
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool UnregisterDeviceNotification([In] IntPtr handle);
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with device contexts.
- /// </summary>
- public static class DeviceContext
- {
- /// <summary>
- /// Retrieves a handle to a device context (DC) for the client area
- /// of a specified window or for the entire screen.
- /// </summary>
- /// <param name="window">
- /// A handle to the window whose DC is to be retrieved.
- /// If this value is <see cref="IntPtr.Zero"/>, the DC for the entire screen is retrieved.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a handle
- /// to the DC for the specified window's client area.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr GetDC([In] [Optional] IntPtr window);
-
- /// <summary>
- /// Releases a device context (DC), freeing it for use by other applications. The effect of this function
- /// depends on the type of DC.<para/>
- /// It frees only common and window DCs. It has no effect on class or private DCs.
- /// </summary>
- /// <param name="window">A handle to the window whose DC is to be released.</param>
- /// <param name="dc">A handle to the DC to be released.</param>
- /// <returns>
- /// The return value indicates whether the DC was released.
- /// If the DC was released, the return value is true.<para/>
- /// If the DC was not released, the return value is false.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ReleaseDC([In] IntPtr window, [In] IntPtr dc);
-
- /// <summary>
- /// Changes the settings of the default display device to the specified graphics mode.<para/>
- /// To change the settings of a specified display device, use the
- /// <see cref="ChangeDisplaySettingsEx(string, IntPtr, IntPtr, DisplaySettingsChanges, IntPtr)"/>
- /// function.
- /// </summary>
- /// <param name="deviceMode">
- /// A <see cref="DeviceMode"/> structure that describes the new graphics mode. If
- /// <paramref name="deviceMode"/> is <see cref="IntPtr.Zero"/>, all the values currently in the registry
- /// will be used for the display setting. Passing <see cref="IntPtr.Zero"/> for the
- /// <paramref name="deviceMode"/> parameter and 0 for the <paramref name="changeFlags"/> parameter is the
- /// easiest way to return to the default mode after a dynamic mode change.
- /// </param>
- /// <param name="changeFlags">Indicates how the graphics mode should be changed.</param>
- /// <returns>
- /// A <see cref="ChangeDisplaySettingsResult"/> indicating the status of the change operation.
- /// </returns>
- [DllImport(Library)]
- public static extern ChangeDisplaySettingsResult ChangeDisplaySettings
- (
- [In] ref DeviceMode deviceMode,
- [In] DisplaySettingsChanges changeFlags
- );
-
- /// <summary>
- /// Changes the settings of the specified display device to the specified graphics mode.
- /// </summary>
- /// <param name="deviceName">
- /// A string that specifies the display device whose graphics mode will change.<para/>
- /// Only display device names as returned by
- /// <see cref="EnumDisplayDevices(string, uint, out DisplayDevice, uint)"/> are valid.
- /// </param>
- /// <param name="deviceMode">
- /// A <see cref="DeviceMode"/> structure that describes the new graphics mode. If
- /// <paramref name="deviceMode"/> is <see cref="IntPtr.Zero"/>, all the values currently in the registry
- /// will be used for the display setting. Passing <see cref="IntPtr.Zero"/> for the
- /// <paramref name="deviceMode"/> parameter and 0 for the <paramref name="changeFlags"/> parameter is the
- /// easiest way to return to the default mode after a dynamic mode change.
- /// </param>
- /// <param name="window">Reserved, must be null.</param>
- /// <param name="changeFlags">Indicates how the graphics mode should be changed.</param>
- /// <param name="changeParams">
- /// If <paramref name="changeFlags"/> is <see cref="DisplaySettingsChanges.VideoParameters"/>, this
- /// parameter is a pointer to a VIDEOPARAMETERS structure.<para/>
- /// Otherwise <paramref name="changeParams"/> must be NULL.
- /// </param>
- /// <returns>
- /// A <see cref="ChangeDisplaySettingsResult"/> indicating the status of the change operation.
- /// </returns>
- [DllImport(Library, CharSet = CharSet.Unicode)]
- public static extern ChangeDisplaySettingsResult ChangeDisplaySettingsEx
- (
- [In] [Optional] string deviceName,
- [In] [Optional] IntPtr deviceMode,
- [Optional] IntPtr window,
- [In] DisplaySettingsChanges changeFlags,
- [In] IntPtr changeParams
- );
-
- /// <summary>
- /// Retrieves information about one of the graphics modes for a display device. To retrieve information
- /// for all the graphics modes of a display device, make a series of calls to this function.
- /// </summary>
- /// <param name="deviceName">
- /// A string that specifies the display device about whose graphics mode the function
- /// will obtain information.<para/>
- /// This parameter is either null or a <see cref="DisplayDevice.DeviceName"/> returned from
- /// <see cref="EnumDisplayDevices(string, uint, out DisplayDevice, uint)"/>. A null value specifies the
- /// current display device on the computer on which the calling thread is running.
- /// </param>
- /// <param name="modeSetting">Specifies the type of information to be retrieved.</param>
- /// <param name="deviceMode">
- /// A <see cref="DeviceMode"/> structure into which the function stores information about the specified
- /// graphics mode. Before calling
- /// <see cref="EnumDisplaySettings(string, DisplayModeSetting, out DeviceMode)"/>, set the
- /// <see cref="DeviceMode.Size"/> member to <see cref="DeviceMode.SizeInBytes"/>,
- /// and set the <see cref="DeviceMode.DriverExtra"/> member to indicate the size, in bytes,
- /// of the additional space available to receive private driver data.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.
- /// If the function fails, the return value is false.
- /// </returns>
- [DllImport(Library, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool EnumDisplaySettings
- (
- [In] string deviceName,
- [In] DisplayModeSetting modeSetting,
- [Out] out DeviceMode deviceMode
- );
-
- /// <summary>
- /// Retrieves information about one of the graphics modes for a display device. To retrieve information
- /// for all the graphics modes of a display device, make a series of calls to this function.
- /// </summary>
- /// <param name="deviceName">
- /// A string that specifies the display device about whose graphics mode the function
- /// will obtain information.<para/>
- /// This parameter is either null or a <see cref="DisplayDevice.DeviceName"/> returned from
- /// <see cref="EnumDisplayDevices(string, uint, out DisplayDevice, uint)"/>. A null value specifies the
- /// current display device on the computer on which the calling thread is running.
- /// </param>
- /// <param name="modeSetting">Specifies the type of information to be retrieved.</param>
- /// <param name="deviceMode">
- /// A <see cref="DeviceMode"/> structure into which the function stores information about the specified
- /// graphics mode. Before calling
- /// <see cref="EnumDisplaySettings(string, DisplayModeSetting, out DeviceMode)"/>, set the
- /// <see cref="DeviceMode.Size"/> member to <see cref="DeviceMode.SizeInBytes"/>,
- /// and set the <see cref="DeviceMode.DriverExtra"/> member to indicate the size, in bytes,
- /// of the additional space available to receive private driver data.
- /// </param>
- /// <param name="displayModeFlags">
- /// Sets constraints on which graphics modes to return for the given display device.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.
- /// If the function fails, the return value is false.
- /// </returns>
- [DllImport(Library, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool EnumDisplaySettingsEx
- (
- [In] string deviceName,
- [In] DisplayModeSetting modeSetting,
- [Out] out DeviceMode deviceMode,
- [In] EnumDisplayModes displayModeFlags
- );
-
- /// <summary>
- /// Obtains information about the display devices in the current session.
- /// </summary>
- /// <param name="deviceName">
- /// A pointer to the device name. If NULL, function returns information for the display adapter(s)
- /// on the machine, based on <paramref name="deviceIndex"/>.
- /// </param>
- /// <param name="deviceIndex">An index value that specifies the display device of interest.</param>
- /// <param name="displayDevice">
- /// A <see cref="DisplayDevice"/> structure that receives information about the display device
- /// specified by <paramref name="deviceIndex"/>.<para/>
- /// Before calling <see cref="EnumDisplayDevices(string, uint, out DisplayDevice, uint)"/>, you must
- /// initialize the <see cref="DisplayDevice.Size"/> member of <see cref="DisplayDevice"/>
- /// to <see cref="DisplayDevice.SizeInBytes"/>.
- /// </param>
- /// <param name="flags">
- /// Set this to 1 to retrieve the device interface name for GUID_DEVINTERFACE_MONITOR, which is registered
- /// by the operating system on a per monitor basis. The value is placed in the
- /// <see cref="DisplayDevice.DeviceID"/> member in <paramref name="displayDevice"/>. The resulting device
- /// interface name can be used with SetupAPI functions and serves as a link between GDI monitor
- /// devices and SetupAPI monitor devices.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// The function fails if <paramref name="deviceIndex"/> is greater than the largest device index.
- /// </returns>
- [DllImport(Library, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool EnumDisplayDevices
- (
- [In] [Optional] string deviceName,
- [In] uint deviceIndex,
- [Out] out DisplayDevice displayDevice,
- [In] uint flags
- );
- }
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="User32.DeviceContext.ChangeDisplaySettings(ref DeviceMode, DisplaySettingsChanges)"/>
- /// and <see cref="User32.DeviceContext.ChangeDisplaySettingsEx(string, IntPtr, IntPtr, DisplaySettingsChanges,
- /// IntPtr)"/> to indicate the result of the function call.
- /// </summary>
- public enum ChangeDisplaySettingsResult : int
- {
- /// <summary>
- /// The settings change was successful.
- /// </summary>
- Successful = 0,
-
- /// <summary>
- /// The computer must be restarted for the graphics mode to work.
- /// </summary>
- Restart = 1,
-
- /// <summary>
- /// The display driver failed the specified graphics mode.
- /// </summary>
- Failed = -1,
-
- /// <summary>
- /// The graphics mode is not supported.
- /// </summary>
- BadMode = -2,
-
- /// <summary>
- /// Unable to write settings to the registry.
- /// </summary>
- NotUpdated = -3,
-
- /// <summary>
- /// An invalid set of flags was passed in.
- /// </summary>
- BadFlags = -4,
-
- /// <summary>
- /// An invalid parameter was passed in. This can include an invalid flag or combination of flags.
- /// </summary>
- BadParam = -5,
-
- /// <summary>
- /// The settings change was unsuccessful because the system is DualView capable.
- /// Only supported on XP and higher.
- /// </summary>
- BadDualView = -6,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies resource identifiers for the pre-defined cursors.
- /// </summary>
- public enum CursorName
- {
- /// <summary>
- /// Standard arrow and small hourglass.
- /// </summary>
- AppStarting = 32650,
-
- /// <summary>
- /// Standard arrow.
- /// </summary>
- Arrow = 32512,
-
- /// <summary>
- /// Crosshair.
- /// </summary>
- Cross = 32515,
-
- /// <summary>
- /// Hand.
- /// </summary>
- Hand = 32649,
-
- /// <summary>
- /// Arrow and question mark.
- /// </summary>
- Help = 32651,
-
- /// <summary>
- /// I-beam.
- /// </summary>
- IBeam = 32513,
-
- /// <summary>
- /// Obsolete for applications marked version 4.0 or later.
- /// </summary>
- Icon = 32641,
-
- /// <summary>
- /// Slashed circle.
- /// </summary>
- No = 32648,
-
- /// <summary>
- /// Obsolete for applications marked version 4.0 or later. Use <see cref="SizeAll"/>.
- /// </summary>
- Size = 32640,
-
- /// <summary>
- /// Four-pointed arrow pointing north, south, east, and west.
- /// </summary>
- SizeAll = 32646,
-
- /// <summary>
- /// Double-pointed arrow pointing northeast and southwest.
- /// </summary>
- SizeNortheastSouthwest = 32643,
-
- /// <summary>
- /// Double-pointed arrow pointing north and south.
- /// </summary>
- SizeNorthSouth = 32645,
-
- /// <summary>
- /// Double-pointed arrow pointing northwest and southeast.
- /// </summary>
- SizeNorthwestSoutheast = 32642,
-
- /// <summary>
- /// Double-pointed arrow pointing west and east.
- /// </summary>
- SizeWestEast = 32644,
-
- /// <summary>
- /// Vertical arrow.
- /// </summary>
- UpArrow = 32516,
-
- /// <summary>
- /// Hourglass.
- /// </summary>
- Wait = 32514
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in the <see cref="BroadcastDeviceInterface"/>.
- /// </summary>
- public enum DeviceBroadcastType : uint
- {
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- Oem = 0,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- DevNode = 1,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- Volume = 2,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- Port = 3,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- Net = 4,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- DeviceInterface = 5,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- Handle = 6
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in the <see cref="DeviceMode"/> structure to specify whether certain members of the structure
- /// have been initialized.<para/>
- /// If a member is initialized, its corresponding bit is set, otherwise the bit is clear.
- /// A driver supports only those <see cref="DeviceMode"/> members that are appropriate for the
- /// printer or display technology.
- /// </summary>
- [Flags]
- public enum DeviceModeFieldFlags : uint
- {
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.Orientation"/> field is set.
- /// </summary>
- Orientation = 0x00000001,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.PaperSize"/> field is set.
- /// </summary>
- PaperSize = 0x00000002,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.PaperLength"/> field is set.
- /// </summary>
- PaperLength = 0x00000004,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.PaperWidth"/> field is set.
- /// </summary>
- PaperWidth = 0x00000008,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.Scale"/> field is set.
- /// </summary>
- Scale = 0x00000010,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.DisplayDeviceOptions.Position"/> field is set.
- /// </summary>
- Position = 0x00000020,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.Nup"/> field is set.
- /// </summary>
- Nup = 0x00000040,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.DisplayDeviceOptions.DisplayOrientation"/> field is set.
- /// </summary>
- DisplayOrientation = 0x00000080,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.Copies"/> field is set.
- /// </summary>
- Copies = 0x00000100,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.DefaultSource"/> field is set.
- /// </summary>
- DefaultSource = 0x00000200,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PrinterDeviceOptions.PrintQuality"/> field is set.
- /// </summary>
- PrintQuality = 0x00000400,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.Color"/> field is set.
- /// </summary>
- Color = 0x00000800,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.Duplex"/> field is set.
- /// </summary>
- Duplex = 0x00001000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.YResolution"/> field is set.
- /// </summary>
- YResolution = 0x00002000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.TrueTypeOption"/> field is set.
- /// </summary>
- TrueTypeOption = 0x00004000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.Collate"/> field is set.
- /// </summary>
- Collate = 0x00008000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.FormName"/> field is set.
- /// </summary>
- FormName = 0x00010000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.LogPixels"/> field is set.
- /// </summary>
- LogPixels = 0x00020000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.BitsPerPixel"/> field is set.
- /// </summary>
- BitsPerPixel = 0x00040000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.WidthInPixels"/> field is set.
- /// </summary>
- WidthInPixels = 0x00080000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.HeightInPixels"/> field is set.
- /// </summary>
- HeightInPixels = 0x00100000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.DisplayFlags"/> field is set.
- /// </summary>
- DisplayFlags = 0x00200000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.DisplayFrequency"/> field is set.
- /// </summary>
- DisplayFrequency = 0x00400000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.IcmMethod"/> field is set.
- /// </summary>
- IcmMethod = 0x00800000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.IcmIntent"/> field is set.
- /// </summary>
- IcmIntent = 0x01000000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.MediaType"/> field is set.
- /// </summary>
- MediaType = 0x02000000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.DitherType"/> field is set.
- /// </summary>
- DitherType = 0x04000000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PanningWidth"/> field is set.
- /// </summary>
- PanningWidth = 0x08000000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.PanningHeight"/> field is set.
- /// </summary>
- PanningHeight = 0x10000000,
-
- /// <summary>
- /// Specifies whether the <see cref="DeviceMode.DisplayDeviceOptions.DisplayFixedOutput"/> field is set.
- /// </summary>
- DisplayFixedOutput = 0x20000000,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in
- /// <see cref="User32.Device.RegisterDeviceNotification(System.IntPtr, System.IntPtr, DeviceNotificationEnum)"/>
- /// to specify additional information.
- /// </summary>
- public enum DeviceNotificationEnum
- {
- /// <summary>
- /// The recipient parameter is a window handle.
- /// </summary>
- WindowHandle = 0x00000000,
-
- /// <summary>
- /// The recipient parameter is a service status handle.
- /// </summary>
- ServiceHandle = 0x00000001,
-
- /// <summary>
- /// Notifies the recipient of device interface events for all device interface classes.
- /// (The dbcc_classguid member is ignored.)<para/>
- /// This value can be used only if the dbch_devicetype member is
- /// <see cref="DeviceBroadcastType.DeviceInterface"/>.
- /// </summary>
- AllInterfaceClasses = 0x00000004
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="DisplayDevice"/> to represent the device state.
- /// </summary>
- [Flags]
- public enum DisplayDeviceStateFlags : uint
- {
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- AttachedToDesktop = 0x00000001,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- MultiDriver = 0x00000002,
-
- /// <summary>
- /// The primary desktop is on the device. For a system with a single display card, this is always set. For a
- /// system with multiple display cards, only one device can have this set.
- /// </summary>
- PrimaryDevice = 0x00000004,
-
- /// <summary>
- /// Represents a pseudo device used to mirror application drawing for remoting or other purposes.<para/>
- /// An invisible pseudo monitor is associated with this device.
- /// </summary>
- MirroringDriver = 0x00000008,
-
- /// <summary>
- /// The device is VGA compatible.
- /// </summary>
- VgaCompatible = 0x00000010,
-
- /// <summary>
- /// The device is removable; it cannot be the primary display.
- /// </summary>
- Removable = 0x00000020,
-
- /// <summary>
- /// The device has more display modes than its output devices support.
- /// </summary>
- ModesPruned = 0x08000000,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// For fixed-resolution displays, specifies how the device can present a lower-resolution
- /// mode on a higher-resolution display.
- /// </summary>
- public enum DisplayFixedOutputType : uint
- {
- /// <summary>
- /// The display device presents a lower-resolution mode image by stretching it to fill the larger screen space.
- /// </summary>
- Stretch = 1,
-
- /// <summary>
- /// The display device presents a lower resolution mode image by centering it in the larger screen space.
- /// </summary>
- Center = 2,
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the device's display mode.
- /// </summary>
- [Flags]
- public enum DisplayFlags : uint
- {
- /// <summary>
- /// Specifies that the display is a noncolor device. If this flag is not set, color is assumed.
- /// </summary>
- Grayscale = 0x00000001,
-
- /// <summary>
- /// Specifies that the display mode is interlaced. If the flag is not set, noninterlaced is assumed.
- /// </summary>
- Interlaced = 0x00000002,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="User32.DeviceContext.EnumDisplaySettings(string, DisplayModeSetting, out DeviceMode)"/> and
- /// <see cref="User32.DeviceContext.EnumDisplaySettingsEx(string, DisplayModeSetting, out DeviceMode,
- /// EnumDisplayModes)"/> to specify which information should be retrieved.
- /// </summary>
- public enum DisplayModeSetting : uint
- {
- /// <summary>
- /// Retrieve the current settings for the display device.
- /// </summary>
- CurrentSettings = unchecked((uint)(-1)),
-
- /// <summary>
- /// Retrieve the settings for the display device that are currently stored in the registry.
- /// </summary>
- RegistrySettings = unchecked((uint)(-2))
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines possible display orientations.
- /// </summary>
- public enum DisplayOrientation : uint
- {
- /// <summary>
- /// The current mode's display device orientation is the natural orientation of the device,
- /// and should be used as the default.
- /// </summary>
- Default = 0,
-
- /// <summary>
- /// The display device orientation is 90 degrees (measured clockwise) from that of <see cref="Default"/>.
- /// </summary>
- Rotated90 = 1,
-
- /// <summary>
- /// The display device orientation is 180 degrees (measured clockwise) from that of <see cref="Default"/>.
- /// </summary>
- Rotated180 = 2,
-
- /// <summary>
- /// The display device orientation is 270 degrees (measured clockwise) from that of <see cref="Default"/>.
- /// </summary>
- Rotated270 = 3,
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="User32.DeviceContext.ChangeDisplaySettings(ref DeviceMode, DisplaySettingsChanges)"/>
- /// and <see cref="User32.DeviceContext.ChangeDisplaySettingsEx(string, IntPtr, IntPtr, DisplaySettingsChanges,
- /// IntPtr)"/> to indicate how the graphics mode should be changed.
- /// </summary>
- [Flags]
- public enum DisplaySettingsChanges : uint
- {
- /// <summary>
- /// The graphics mode for the current screen will be changed dynamically.
- /// </summary>
- Dynamic = 0,
-
- /// <summary>
- /// The graphics mode for the current screen will be changed dynamically and the graphics mode will be
- /// updated in the registry. The mode information is stored in the USER profile.
- /// </summary>
- UpdateRegistry = 0x00000001,
-
- /// <summary>
- /// The system tests if the requested graphics mode could be set.
- /// </summary>
- Test = 0x00000002,
-
- /// <summary>
- /// The mode is temporary in nature.<para/>
- /// If you change to and from another desktop, this mode will not be reset.
- /// </summary>
- Fullscreen = 0x00000004,
-
- /// <summary>
- /// The settings will be saved in the global settings area so that they will affect all users on the machine.
- /// Otherwise, only the settings for the user are modified.
- /// This flag is only valid when specified with the <see cref="UpdateRegistry"/> flag.
- /// </summary>
- Global = 0x00000008,
-
- /// <summary>
- /// This device will become the primary device.
- /// </summary>
- SetPrimary = 0x00000010,
-
- /// <summary>
- /// Not supported by <see cref="User32.DeviceContext.ChangeDisplaySettings"/>.<para/>
- /// Only supported on Vista and higher.
- /// </summary>
- VideoParameters = 0x00000020,
-
- /// <summary>
- /// Not supported by <see cref="User32.DeviceContext.ChangeDisplaySettings"/>.<para/>
- /// Only supported on Vista and higher.
- /// </summary>
- EnableUnsafeModes = 0x00000100,
-
- /// <summary>
- /// Not supported by <see cref="User32.DeviceContext.ChangeDisplaySettings"/>.<para/>
- /// Only supported on Vista and higher.
- /// </summary>
- DisableUnsafeModes = 0x00000200,
-
- /// <summary>
- /// The settings should be changed, even if the requested settings are the same as the current settings.
- /// </summary>
- Reset = 0x40000000,
-
- /// <summary>
- /// The settings will be saved in the registry, but will not take effect.
- /// This flag is only valid when specified with the <see cref="UpdateRegistry"/> flag.
- /// </summary>
- NoReset = 0x10000000
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Flags used in <see cref="User32.DeviceContext.EnumDisplaySettingsEx(string, DisplayModeSetting, out DeviceMode,
- /// EnumDisplayModes)"/> to specify which graphics modes to return.
- /// </summary>
- [Flags]
- public enum EnumDisplayModes
- {
- /// <summary>
- /// If set, the function will return all graphics modes reported by the adapter driver, regardless of
- /// monitor capabilities. Otherwise, it will only return modes that are compatible with current monitors.
- /// </summary>
- RawMode = 0x00000002,
-
- /// <summary>
- /// If set, the function will return graphics modes in all orientations. Otherwise, it will only return
- /// modes that have the same orientation as the one currently set for the requested display.
- /// </summary>
- RotatedMode = 0x00000004,
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines extended window style flags for usage in <see cref="User32.Window.AdjustWindowRectEx(ref Rect,
- /// WindowStyles, bool, ExtendedWindowStyles)"/> and <see cref="User32.Window.CreateWindowEx(
- /// ExtendedWindowStyles, string, string, WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/>.
- /// </summary>
- [Flags]
- public enum ExtendedWindowStyles : uint
- {
- /// <summary>
- /// The window has a double border; the window can, optionally, be created with a title bar
- /// by specifying the <see cref="WindowStyles.Caption"/> style in the dwStyle parameter.
- /// </summary>
- DialogModalFrame = 0x00000001,
-
- /// <summary>
- /// The child window created with this style does not send the <see cref="WindowMessage.ParentNotify"/> message
- /// to its parent window when it is created or destroyed.
- /// </summary>
- NoParentModify = 0x00000004,
-
- /// <summary>
- /// The window should be placed above all non-topmost windows and should stay above them,
- /// even when the window is deactivated. To add or remove this style, use the
- /// <see cref="User32.Window.SetWindowPos(IntPtr, IntPtr, int, int, int, int, SetWindowPosFlags)"/> function.
- /// </summary>
- Topmost = 0x00000008,
-
- /// <summary>
- /// The window accepts drag-drop files.
- /// </summary>
- AcceptFiles = 0x00000010,
-
- /// <summary>
- /// The window should not be painted until siblings beneath the window
- /// (that were created by the same thread) have been painted.
- /// The window appears transparent because the bits of underlying
- /// sibling windows have already been painted.<para/>
- /// To achieve transparency without these restrictions, use the SetWindowRgn function.
- /// </summary>
- Transparent = 0x00000020,
-
- /// <summary>
- /// The window is a MDI child window.
- /// </summary>
- MdiChild = 0x00000040,
-
- /// <summary>
- /// The window is intended to be used as a floating toolbar. A tool window has a title bar
- /// that is shorter than a normal title bar, and the window title is drawn using a smaller font.
- /// A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB.
- /// If a tool window has a system menu, its icon is not displayed on the title bar. However,
- /// you can display the system menu by right-clicking or by typing ALT+SPACE.
- /// </summary>
- ToolWindow = 0x00000080,
-
- /// <summary>
- /// The window has a border with a raised edge.
- /// </summary>
- WindowEdge = 0x00000100,
-
- /// <summary>
- /// The window has a border with a sunken edge.
- /// </summary>
- ClientEdge = 0x00000200,
-
- /// <summary>
- /// The title bar of the window includes a question mark. When the user clicks the question mark,
- /// the cursor changes to a question mark with a pointer. If the user then clicks a child window,
- /// the child receives a <see cref="WindowMessage.Help"/> message. The child window should pass the message to
- /// the parent window procedure, which should call the WinHelp function using the HELP_WM_HELP command.
- /// The Help application displays a pop-up window that typically contains help for the child window.<para/>
- /// <see cref="ContextHelp"/> cannot be used with the <see cref="WindowStyles.MaximizeBox"/>
- /// or <see cref="WindowStyles.MinimizeBox"/> styles.
- /// </summary>
- ContextHelp = 0x00000400,
-
- /// <summary>
- /// The window has generic "right-aligned" properties. This depends on the window class.
- /// This style has an effect only if the shell language is Hebrew, Arabic, or another language
- /// that supports reading-order alignment; otherwise, the style is ignored.<para/>
- /// Using the <see cref="Right"/> style for static or edit controls has the same effect as using the SS_RIGHT
- /// or ES_RIGHT style, respectively. Using this style with button controls has the same effect
- /// as using BS_RIGHT and BS_RIGHTBUTTON styles.
- /// </summary>
- Right = 0x00001000,
-
- /// <summary>
- /// The window has generic left-aligned properties. This is the default.
- /// </summary>
- Left = 0x00000000,
-
- /// <summary>
- /// If the shell language is Hebrew, Arabic, or another language that supports reading-order alignment,
- /// the window text is displayed using right-to-left reading-order properties. For other languages,
- /// the style is ignored.
- /// </summary>
- RtlReading = 0x00002000,
-
- /// <summary>
- /// The window text is displayed using left-to-right reading-order properties. This is the default.
- /// </summary>
- LtrReading = 0x00000000,
-
- /// <summary>
- /// If the shell language is Hebrew, Arabic, or another language that supports reading order alignment,
- /// the vertical scroll bar (if present) is to the left of the client area.
- /// For other languages, the style is ignored.
- /// </summary>
- LeftScrollbar = 0x00004000,
-
- /// <summary>
- /// The vertical scroll bar (if present) is to the right of the client area. This is the default.
- /// </summary>
- RightScrollbar = 0x00000000,
-
- /// <summary>
- /// The window itself contains child windows that should take part in dialog box navigation.<para/>
- /// If this style is specified, the dialog manager recurses into children of this window when performing
- /// navigation operations such as handling the TAB key, an arrow key, or a keyboard mnemonic.
- /// </summary>
- ControlParent = 0x00010000,
-
- /// <summary>
- /// The window has a three-dimensional border style intended to be used for items
- /// that do not accept user input.
- /// </summary>
- StaticEdge = 0x00020000,
-
- /// <summary>
- /// Forces a top-level window onto the taskbar when the window is visible.
- /// </summary>
- AppWindow = 0x00040000,
-
- /// <summary>
- /// The window is an overlapped window.
- /// </summary>
- OverlappedWindow = WindowEdge | ClientEdge,
-
- /// <summary>
- /// The window is palette window, which is a modeless dialog box that presents an array of commands.
- /// </summary>
- PaletteWindow = WindowEdge | ToolWindow | Topmost,
-
- /// <summary>
- /// The window is a layered window. This style cannot be used if the window has
- /// a class style of either <see cref="WindowClassStyles.OwnDeviceContext"/> or
- /// <see cref="WindowClassStyles.ClassDeviceContext"/>.<para/>
- /// </summary>
- Layered = 0x00080000,
-
- /// <summary>
- /// The window does not pass its window layout to its child windows.<para/>
- /// </summary>
- NoInheritLayout = 0x00100000,
-
- /// <summary>
- /// The window does not render to a redirection surface. This is for windows that do not have visible
- /// content or that use mechanisms other than surfaces to provide their visual.<para/>
- /// </summary>
- NoRedirectionBitmap = 0x00200000,
-
- /// <summary>
- /// If the shell language is Hebrew, Arabic, or another language that supports reading order alignment,
- /// the horizontal origin of the window is on the right edge.
- /// Increasing horizontal values advance to the left.<para/>
- /// </summary>
- LayoutRtl = 0x00400000,
-
- /// <summary>
- /// Paints all descendants of a window in bottom-to-top painting order using double-buffering.<para/>
- /// This cannot be used if the window has a class style of either <see cref="WindowClassStyles.OwnDeviceContext"/>
- /// or <see cref="WindowClassStyles.ClassDeviceContext"/>.<para/>
- /// </summary>
- Composited = 0x02000000,
-
- /// <summary>
- /// A top-level window created with this style does not become the foreground window when the user clicks it.
- /// The system does not bring this window to the foreground when the user minimizes or closes
- /// the foreground window.<para/>
- /// The window should not be activated through programmatic access or via keyboard navigation by accessible
- /// technology, such as Narrator.<para/>
- /// To activate the window, use the SetActiveWindow or <see cref="User32.Window.SetForegroundWindow"/>
- /// function.<para/>
- /// The window does not appear on the taskbar by default. To force the window to appear on the taskbar,
- /// use the <see cref="ExtendedWindowStyles.AppWindow"/> style.<para/>
- /// </summary>
- NoActivate = 0x08000000
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the resolution desired by <see cref="User32.Mouse.GetMouseMovePointsEx(uint, ref MouseMovePoint,
- /// MouseMovePoint*, int, GetMouseMovePointsResolution)"/>.
- /// </summary>
- public enum GetMouseMovePointsResolution : uint
- {
- /// <summary>
- /// Retrieves the points using the display resolution.
- /// </summary>
- UseDisplayPoints = 1,
-
- /// <summary>
- /// Retrieves high resolution points. Points can range from zero to 65,535 (0xFFFF) in both x- and
- /// y-coordinates. This is the resolution provided by absolute coordinate pointing devices
- /// such as drawing tablets.
- /// </summary>
- UseHighResolutionPoints = 2
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies which type of raw input data to get in a <see cref="User32.RawInput.GetRawInputData(System.IntPtr,
- /// GetRawInputDataCommand, System.IntPtr, ref uint, uint)"/> function call.
- /// </summary>
- public enum GetRawInputDataCommand : uint
- {
- /// <summary>
- /// Get the raw data from the <see cref="RawInput"/> structure.
- /// </summary>
- Input = 0x10000003,
-
- /// <summary>
- /// Get the header information from the <see cref="RawInput"/> structure.
- /// </summary>
- Header = 0x10000005
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="User32.RawInput.GetRawInputDeviceInfo(System.IntPtr,
- /// GetRawInputDeviceInfoEnum, byte[], ref uint)"/> to specify what data to return in the data parameter.
- /// </summary>
- public enum GetRawInputDeviceInfoEnum : uint
- {
- /// <summary>
- /// data points to the previously parsed data.
- /// </summary>
- PreparsedData = 0x20000005,
-
- /// <summary>
- /// data points to a string that contains the device name.<para/>
- /// For this command only, the value in dataSize is the character count (not the byte count).
- /// </summary>
- DeviceName = 0x20000007,
-
- /// <summary>
- /// data points to an <see cref="RawInputDeviceInfo"/> structure.
- /// </summary>
- DeviceInfo = 0x2000000b
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Pre-defines memory offsets in extra window memory for specific pieces information to be used in
- /// <see cref="User32.Window.GetWindowLong(System.IntPtr, GetWindowLongIndex)"/> and
- /// <see cref="User32.Window.SetWindowLong(System.IntPtr, GetWindowLongIndex, System.IntPtr)"/>.
- /// </summary>
- public enum GetWindowLongIndex
- {
- /// <summary>
- /// Retrieves the address of the window procedure, or a handle
- /// representing the address of the window procedure.
- /// You must use the CallWindowProc function to call the window procedure.
- /// </summary>
- WindowProcedure = -4,
-
- /// <summary>
- /// Retrieves a handle to the application instance.
- /// </summary>
- HInstance = -6,
-
- /// <summary>
- /// Retrieves a handle to the parent window, if any.<para/>
- /// Not supported in <see cref="User32.Window.SetWindowLong(System.IntPtr, int, System.IntPtr)"/>.
- /// </summary>
- HWndParent = -8,
-
- /// <summary>
- /// Retrieves the identifier of the window.
- /// </summary>
- ID = -12,
-
- /// <summary>
- /// Retrieves the window styles.
- /// </summary>
- Style = -16,
-
- /// <summary>
- /// Retrieves the extended window styles.
- /// </summary>
- ExStyle = -20,
-
- /// <summary>
- /// Retrieves the user data associated with the window.
- /// This data is intended for use by the application that created the window.
- /// Its value is initially zero.
- /// </summary>
- UserData = -21
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies resource identifiers for the pre-defined icons.
- /// </summary>
- public enum IconName
- {
- /// <summary>
- /// Application icon.
- /// </summary>
- Application = 32512,
-
- /// <summary>
- /// Stop sign icon.
- /// </summary>
- Hand = 32513,
-
- /// <summary>
- /// Question-mark icon.
- /// </summary>
- Question = 32514,
-
- /// <summary>
- /// Exclamation point icon.
- /// </summary>
- Exclamation = 32515,
-
- /// <summary>
- /// Asterisk icon.
- /// </summary>
- Asterisk = 32516,
-
- /// <summary>
- /// Application icon.
- /// </summary>
- WinLogo = 32517,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="MapVirtualKeyType"/> to specify the translation to be performed.
- /// </summary>
- public enum MapVirtualKeyType : uint
- {
- /// <summary>
- /// uCode is a virtual-key code and is translated into a scan code. If it is a virtual-key code that does not
- /// distinguish between left- and right-hand keys, the left-hand scan code is returned.
- /// If there is no translation, the function returns 0.
- /// </summary>
- VirtualKeyToScanCode = 0,
-
- /// <summary>
- /// uCode is a scan code and is translated into a virtual-key code that does not distinguish between left- and
- /// right-hand keys. If there is no translation, the function returns 0.
- /// </summary>
- ScanCodeToVirtualKey = 1,
-
- /// <summary>
- /// uCode is a virtual-key code and is translated into an unshifted character value in the low-order word of
- /// the return value. Dead keys (diacritics) are indicated by setting the top bit of the return value.
- /// If there is no translation, the function returns 0.
- /// </summary>
- VirtualKeyToCharacter = 2,
-
- /// <summary>
- /// Windows NT/2000/XP: uCode is a scan code and is translated into a virtual-key code that distinguishes
- /// between left- and right-hand keys. If there is no translation, the function returns 0.
- /// </summary>
- ScanCodeToVirtualKeyExtended = 3,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- VirtualKeyToScanCodeExtended = 4
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies what values to return if
- /// <see cref="User32.Monitor.MonitorFromPoint(Point, MonitorFromDefaultValue)"/> and
- /// <see cref="User32.Monitor.MonitorFromWindow(System.IntPtr, MonitorFromDefaultValue)"/>
- /// fail to find a monitor for the given arguments.
- /// </summary>
- public enum MonitorFromDefaultValue : uint
- {
- /// <summary>
- /// Returns null.
- /// </summary>
- DefaultToNull = 0,
-
- /// <summary>
- /// Returns a handle to the primary display monitor.
- /// </summary>
- DefaultToPrimary = 1,
-
- /// <summary>
- /// Returns a handle to the display monitor that is nearest to the window/display monitor.
- /// </summary>
- DefaultToNearest = 2
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="User32.Message.PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/>
- /// to define what actions to take for retrieved messages.
- /// </summary>
- [Flags]
- public enum PeekMessageActions : uint
- {
- /// <summary>
- /// Messages are not removed from the queue after processing by <see cref="User32.Message.PeekMessage"/>.
- /// </summary>
- NoRemove = 0,
-
- /// <summary>
- /// Messages are removed from the queue after processing by <see cref="User32.Message.PeekMessage"/>.
- /// </summary>
- Remove = 1,
-
- /// <summary>
- /// Prevents the system from releasing any thread that is waiting for the caller to go idle
- /// (see WaitForInputIdle). Combine this value with either <see cref="NoRemove"/> or <see cref="Remove"/>.
- /// </summary>
- NoYield = 2,
-
- /// <summary>
- /// Process mouse and keyboard messages.
- /// </summary>
- QSInput = QueueMessageTypes.Input << 16,
-
- /// <summary>
- /// Process paint messages.
- /// </summary>
- QSPaint = QueueMessageTypes.Paint << 16,
-
- /// <summary>
- /// Process all posted messages, including timers and hotkeys.
- /// </summary>
- QSPostMessage = (QueueMessageTypes.PostMessage | QueueMessageTypes.Hotkey | QueueMessageTypes.Timer) << 16,
-
- /// <summary>
- /// Process all sent messages.
- /// </summary>
- QSSendMessage = QueueMessageTypes.SendMessage << 16
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the color mode to use with color printers.
- /// </summary>
- public enum PrinterColor : short
- {
- /// <summary>
- /// Use monochrome printing mode.
- /// </summary>
- Monochrome = 1,
-
- /// <summary>
- /// Use color printing mode.
- /// </summary>
- Color = 2,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// For a printer, specifies the paper source.
- /// </summary>
- public enum PrinterDefaultSource : short
- {
- /// <summary>
- /// Select the upper paper bin.
- /// This value is also used for the paper source for printers that only have one paper bin.
- /// </summary>
- Upper = 1,
-
- /// <summary>
- /// Same as <see cref="Upper"/>.
- /// </summary>
- OnlyOne = 1,
-
- /// <summary>
- /// Select the lower bin.
- /// </summary>
- Lower = 2,
-
- /// <summary>
- /// Select the middle paper bin.
- /// </summary>
- Middle = 3,
-
- /// <summary>
- /// Manually select the paper bin.
- /// </summary>
- Manual = 4,
-
- /// <summary>
- /// Select the auto envelope bin.
- /// </summary>
- Envelope = 5,
-
- /// <summary>
- /// Select the manual envelope bin.
- /// </summary>
- EnvelopeManual = 6,
-
- /// <summary>
- /// Auto-select the bin.
- /// </summary>
- Auto = 7,
-
- /// <summary>
- /// Select the bin with the tractor paper.
- /// </summary>
- Tractor = 8,
-
- /// <summary>
- /// Select the bin with the smaller paper format.
- /// </summary>
- SmallFormat = 9,
-
- /// <summary>
- /// Select the bin with the larger paper format.
- /// </summary>
- LargeFormat = 10,
-
- /// <summary>
- /// Select the bin with large capacity.
- /// </summary>
- LargeCapacity = 11,
-
- /// <summary>
- /// Select the cassette bin.
- /// </summary>
- Cassette = 14,
-
- /// <summary>
- /// Select the bin with the required form.
- /// </summary>
- FormSource = 15,
-
- /// <summary>
- /// Starting value for user-defined printer sources.
- /// </summary>
- User = 256,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// For printers, specifies types of dithering.
- /// </summary>
- public enum PrinterDitherType : uint
- {
- /// <summary>
- /// No dithering.
- /// </summary>
- None = 1,
-
- /// <summary>
- /// Dithering with a coarse brush.
- /// </summary>
- Coarse = 2,
-
- /// <summary>
- /// Dithering with a fine brush.
- /// </summary>
- Fine = 3,
-
- /// <summary>
- /// Line art dithering, a special dithering method that produces well defined borders between black, white,
- /// and gray scaling. It is not suitable for images that include continuous graduations in intensity and hue,
- /// such as scanned photographs.
- /// </summary>
- LineArt = 4,
-
- /// <summary>
- /// Error diffusion dithering.<para/>
- /// Only supported on Windows 95, 98, and Millennium Edition.
- /// </summary>
- ErrorDiffusion = 5,
-
- /// <summary>
- /// Reserved. Do not use.
- /// </summary>
- Reserved6 = 6,
-
- /// <summary>
- /// Reserved. Do not use.
- /// </summary>
- Reserved7 = 7,
-
- /// <summary>
- /// Reserved. Do not use.
- /// </summary>
- Reserved8 = 8,
-
- /// <summary>
- /// Reserved. Do not use.
- /// </summary>
- Reserved9 = 9,
-
- /// <summary>
- /// Device does gray scaling.
- /// </summary>
- Grayscale = 10,
-
- /// <summary>
- /// This is the starting value for user-defined values.
- /// </summary>
- User = 256,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies duplex (double-sided) printing for duplex-capable printers.
- /// </summary>
- public enum PrinterDuplex : short
- {
- /// <summary>
- /// Print single-sided.
- /// </summary>
- SimpleX = 1,
-
- /// <summary>
- /// Print double-sided, using long edge binding.
- /// </summary>
- Vertical = 2,
-
- /// <summary>
- /// Print double-sided, using short edge binding.
- /// </summary>
- Horizontal = 3,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies which color matching method, or intent, is used by default.
- /// </summary>
- public enum PrinterIcmIntent : uint
- {
- /// <summary>
- /// Optimize for color saturation.<para/>
- /// This value is the most appropriate choice for business graphs when dithering is not desired.
- /// </summary>
- Saturate = 1,
-
- /// <summary>
- /// Optimize for color contrast.<para/>
- /// This value is the most appropriate choice for scanned or photographic images when dithering is desired.
- /// </summary>
- Contrast = 2,
-
- /// <summary>
- /// Optimize to match the exact color requested.<para/>
- /// This value is most appropriate for use with business logos
- /// or other images when an exact color match is desired.
- /// </summary>
- Colorimetric = 3,
-
- /// <summary>
- /// Optimize to match the exact color requested without white point mapping.<para/>
- /// This value is most appropriate for use with proofing.
- /// </summary>
- AbsoluteColorimetric = 4,
-
- /// <summary>
- /// This is the starting value for user-defined values.
- /// </summary>
- User = 256,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies how Image Color Management (ICM) is handled.
- /// </summary>
- public enum PrinterIcmMethod : uint
- {
- /// <summary>
- /// Specifies that ICM is disabled.
- /// </summary>
- None = 1,
-
- /// <summary>
- /// Specifies that ICM is handled by the system on which the page description language (PDL) data is generated.
- /// </summary>
- System = 2,
-
- /// <summary>
- /// Specifies that ICM is handled by the printer driver.
- /// </summary>
- Driver = 3,
-
- /// <summary>
- /// Specifies that ICM is handled by the destination device.
- /// </summary>
- Device = 4,
-
- /// <summary>
- /// This is the starting value for user-defined values.
- /// </summary>
- User = 256,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the type of media being printed on.
- /// </summary>
- public enum PrinterMediaType : uint
- {
- /// <summary>
- /// Plain paper.
- /// </summary>
- Standard = 1,
-
- /// <summary>
- /// Transparent film.
- /// </summary>
- Transparency = 2,
-
- /// <summary>
- /// Glossy paper.
- /// </summary>
- Glossy = 3,
-
- /// <summary>
- /// This is the starting value for user-defined values.
- /// </summary>
- User = 256,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the responsibility for performing page layout for N-up printing.
- /// </summary>
- public enum PrinterNupHandling : uint
- {
- /// <summary>
- /// The print server does the page layout.
- /// </summary>
- System = 1,
-
- /// <summary>
- /// The application does the page layout.
- /// </summary>
- OneUp = 2,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// For printers, the orientation for output.
- /// </summary>
- public enum PrinterPaperOrientation : short
- {
- /// <summary>
- /// "Portrait" orientation.
- /// </summary>
- Portrait = 1,
-
- /// <summary>
- /// "Landscape" orientation.
- /// </summary>
- Landscape = 2,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Lists all defined types for paper size, with <see cref="Letter"/>, <see cref="Legal"/>, <see cref="A3"/> and
- /// <see cref="A4"/> being the most typical. All types not included in this enum are reserved.<para/>
- /// Note that the paper size types cannot be combined with one another.
- /// </summary>
- public enum PrinterPaperSize : short
- {
- /// <summary>
- /// US Letter 8 1/2 x 11 in
- /// </summary>
- Letter = 1,
-
- /// <summary>
- /// US Letter Small 8 1/2 x 11 in
- /// </summary>
- LetterSmall = 2,
-
- /// <summary>
- /// US Tabloid 11 x 17 in
- /// </summary>
- Tabloid = 3,
-
- /// <summary>
- /// US Ledger 17 x 11 in
- /// </summary>
- Ledger = 4,
-
- /// <summary>
- /// US Legal 8 1/2 x 14 in
- /// </summary>
- Legal = 5,
-
- /// <summary>
- /// US Statement 5 1/2 x 8 1/2 in
- /// </summary>
- Statement = 6,
-
- /// <summary>
- /// US Executive 7 1/4 x 10 1/2 in
- /// </summary>
- Executive = 7,
-
- /// <summary>
- /// A3 297 x 420 mm
- /// </summary>
- A3 = 8,
-
- /// <summary>
- /// A4 210 x 297 mm
- /// </summary>
- A4 = 9,
-
- /// <summary>
- /// A4 Small 210 x 297 mm
- /// </summary>
- A4Small = 10,
-
- /// <summary>
- /// A5 148 x 210 mm
- /// </summary>
- A5 = 11,
-
- /// <summary>
- /// B4 (JIS) 257 x 364 mm
- /// </summary>
- B4 = 12,
-
- /// <summary>
- /// B5 (JIS) 182 x 257 mm
- /// </summary>
- B5 = 13,
-
- /// <summary>
- /// Folio 8 1/2 x 13 in
- /// </summary>
- Folio = 14,
-
- /// <summary>
- /// Quarto 215 x 275 mm
- /// </summary>
- Quarto = 15,
-
- /// <summary>
- /// 10 x 14 in
- /// </summary>
- TenByFourteenInches = 16,
-
- /// <summary>
- /// 11 x 17 in
- /// </summary>
- ElevenBySeventeenInches = 17,
-
- /// <summary>
- /// US Note 8 1/2 x 11 in
- /// </summary>
- Note = 18,
-
- /// <summary>
- /// US Envelope #9 3 7/8 x 8 7/8
- /// </summary>
- Envelope9 = 19,
-
- /// <summary>
- /// US Envelope #10 4 1/8 x 9 1/2
- /// </summary>
- Envelope10 = 20,
-
- /// <summary>
- /// US Envelope #11 4 1/2 x 10 3/8
- /// </summary>
- Envelope11 = 21,
-
- /// <summary>
- /// US Envelope #12 4 3/4 x 11 in
- /// </summary>
- Envelope12 = 22,
-
- /// <summary>
- /// US Envelope #14 5 x 11 1/2
- /// </summary>
- Envelope14 = 23,
-
- /// <summary>
- /// C size sheet
- /// </summary>
- CSheet = 24,
-
- /// <summary>
- /// D size sheet
- /// </summary>
- DSheet = 25,
-
- /// <summary>
- /// E size sheet
- /// </summary>
- ESheet = 26,
-
- /// <summary>
- /// Envelope DL 110 x 220mm
- /// </summary>
- EnvelopeDL = 27,
-
- /// <summary>
- /// Envelope C5 162 x 229 mm
- /// </summary>
- EnvelopeC5 = 28,
-
- /// <summary>
- /// Envelope C3 324 x 458 mm
- /// </summary>
- EnvelopeC3 = 29,
-
- /// <summary>
- /// Envelope C4 229 x 324 mm
- /// </summary>
- EnvelopeC4 = 30,
-
- /// <summary>
- /// Envelope C6 114 x 162 mm
- /// </summary>
- EnvelopeC6 = 31,
-
- /// <summary>
- /// Envelope C65 114 x 229 mm
- /// </summary>
- EnvelopeC65 = 32,
-
- /// <summary>
- /// Envelope B4 250 x 353 mm
- /// </summary>
- EnvelopeB4 = 33,
-
- /// <summary>
- /// Envelope B5 176 x 250 mm
- /// </summary>
- EnvelopeB5 = 34,
-
- /// <summary>
- /// Envelope B6 176 x 125 mm
- /// </summary>
- EnvelopeB6 = 35,
-
- /// <summary>
- /// Envelope 110 x 230 mm
- /// </summary>
- EnvelopeItaly = 36,
-
- /// <summary>
- /// US Envelope Monarch 3.875 x 7.5 in
- /// </summary>
- EnvelopeMonarch = 37,
-
- /// <summary>
- /// 6 3/4 US Envelope 3 5/8 x 6 1/2 in
- /// </summary>
- EnvelopePersonal = 38,
-
- /// <summary>
- /// US Std Fanfold 14 7/8 x 11 in
- /// </summary>
- FanfoldUS = 39,
-
- /// <summary>
- /// German Std Fanfold 8 1/2 x 12 in
- /// </summary>
- FanfoldStandardGerman = 40,
-
- /// <summary>
- /// German Legal Fanfold 8 1/2 x 13 in
- /// </summary>
- FanfoldLegalGerman = 41,
-
- /// <summary>
- /// B4 (ISO) 250 x 353 mm
- /// </summary>
- IsoB4 = 42,
-
- /// <summary>
- /// Japanese Postcard 100 x 148 mm
- /// </summary>
- JapanesePostcard = 43,
-
- /// <summary>
- /// 9 x 11 in
- /// </summary>
- NineByElevenInches = 44,
-
- /// <summary>
- /// 10 x 11 in
- /// </summary>
- TenByElevenInches = 45,
-
- /// <summary>
- /// 15 x 11 in
- /// </summary>
- FifteenByElevenInches = 46,
-
- /// <summary>
- /// Envelope Invite 220 x 220 mm
- /// </summary>
- EnvelopeInvite = 47,
-
- /// <summary>
- /// RESERVED--DO NOT USE
- /// </summary>
- Reserved48 = 48,
-
- /// <summary>
- /// RESERVED--DO NOT USE
- /// </summary>
- Reserved49 = 49,
-
- /// <summary>
- /// US Letter Extra 9 1/2 x 12 in
- /// </summary>
- LetterExtra = 50,
-
- /// <summary>
- /// US Legal Extra 9 1/2 x 15 in
- /// </summary>
- LegalExtra = 51,
-
- /// <summary>
- /// US Tabloid Extra 11.69 x 18 in
- /// </summary>
- TabloidExtra = 52,
-
- /// <summary>
- /// A4 Extra 9.27 x 12.69 in
- /// </summary>
- A4Extra = 53,
-
- /// <summary>
- /// Letter Transverse 8 1/2 x 11 in
- /// </summary>
- LetterTransverse = 54,
-
- /// <summary>
- /// A4 Transverse 210 x 297 mm
- /// </summary>
- A4Transverse = 55,
-
- /// <summary>
- /// Letter Extra Transverse 9 1/2 x 12 in
- /// </summary>
- LetterExtraTransverse = 56,
-
- /// <summary>
- /// SuperA/SuperA/A4 227 x 356 mm
- /// </summary>
- APlus = 57,
-
- /// <summary>
- /// SuperB/SuperB/A3 305 x 487 mm
- /// </summary>
- BPlus = 58,
-
- /// <summary>
- /// US Letter Plus 8.5 x 12.69 in
- /// </summary>
- LetterPlus = 59,
-
- /// <summary>
- /// A4 Plus 210 x 330 mm
- /// </summary>
- A4Plus = 60,
-
- /// <summary>
- /// A5 Transverse 148 x 210 mm
- /// </summary>
- A5Transverse = 61,
-
- /// <summary>
- /// B5 (JIS) Transverse 182 x 257 mm
- /// </summary>
- B5Transverse = 62,
-
- /// <summary>
- /// A3 Extra 322 x 445 mm
- /// </summary>
- A3Extra = 63,
-
- /// <summary>
- /// A5 Extra 174 x 235 mm
- /// </summary>
- A5Extra = 64,
-
- /// <summary>
- /// B5 (ISO) Extra 201 x 276 mm
- /// </summary>
- B5Extra = 65,
-
- /// <summary>
- /// A2 420 x 594 mm
- /// </summary>
- A2 = 66,
-
- /// <summary>
- /// A3 Transverse 297 x 420 mm
- /// </summary>
- A3Transverse = 67,
-
- /// <summary>
- /// A3 Extra Transverse 322 x 445 mm
- /// </summary>
- A3ExtraTransverse = 68,
-
- /// <summary>
- /// Japanese Double Postcard 200 x 148 mm
- /// </summary>
- DoubleJapanesePostcard = 69,
-
- /// <summary>
- /// A6 105 x 148 mm
- /// </summary>
- A6 = 70,
-
- /// <summary>
- /// Japanese Envelope Kaku #2
- /// </summary>
- JapaneseEnvelopeKaku2 = 71,
-
- /// <summary>
- /// Japanese Envelope Kaku #3
- /// </summary>
- JapaneseEnvelopeKaku3 = 72,
-
- /// <summary>
- /// Japanese Envelope Chou #3
- /// </summary>
- JapaneseEnvelopeChou3 = 73,
-
- /// <summary>
- /// Japanese Envelope Chou #4
- /// </summary>
- JapaneseEnvelopeChou4 = 74,
-
- /// <summary>
- /// Letter Rotated 11 x 8 1/2 11 in
- /// </summary>
- LetterRotated = 75,
-
- /// <summary>
- /// A3 Rotated 420 x 297 mm
- /// </summary>
- A3Rotated = 76,
-
- /// <summary>
- /// A4 Rotated 297 x 210 mm
- /// </summary>
- A4Rotated = 77,
-
- /// <summary>
- /// A5 Rotated 210 x 148 mm
- /// </summary>
- A5Rotated = 78,
-
- /// <summary>
- /// B4 (JIS) Rotated 364 x 257 mm
- /// </summary>
- B4JisRotated = 79,
-
- /// <summary>
- /// B5 (JIS) Rotated 257 x 182 mm
- /// </summary>
- B5JisRotated = 80,
-
- /// <summary>
- /// Japanese Postcard Rotated 148 x 100 mm
- /// </summary>
- JapanesePostcardRotated = 81,
-
- /// <summary>
- /// Double Japanese Postcard Rotated 148 x 200 mm
- /// </summary>
- DoubleJapanesePostcardRotated = 82,
-
- /// <summary>
- /// A6 Rotated 148 x 105 mm
- /// </summary>
- A6Rotated = 83,
-
- /// <summary>
- /// Japanese Envelope Kaku #2 Rotated
- /// </summary>
- JapaneseEnvelopeKaku2Rotated = 84,
-
- /// <summary>
- /// Japanese Envelope Kaku #3 Rotated
- /// </summary>
- JapaneseEnvelopeKaku3Rotated = 85,
-
- /// <summary>
- /// Japanese Envelope Chou #3 Rotated
- /// </summary>
- JapaneseEnvelopeChou3Rotated = 86,
-
- /// <summary>
- /// Japanese Envelope Chou #4 Rotated
- /// </summary>
- JapaneseEnvelopeChou4Rotated = 87,
-
- /// <summary>
- /// B6 (JIS) 128 x 182 mm
- /// </summary>
- B6Jis = 88,
-
- /// <summary>
- /// B6 (JIS) Rotated 182 x 128 mm
- /// </summary>
- B6JisRotated = 89,
-
- /// <summary>
- /// 12 x 11 in
- /// </summary>
- TwelveByElevenInches = 90,
-
- /// <summary>
- /// Japanese Envelope You #4
- /// </summary>
- JapaneseEnvelopeYou4 = 91,
-
- /// <summary>
- /// Japanese Envelope You #4 Rotated
- /// </summary>
- JapaneseEnvelopeYou4Rotated = 92,
-
- /// <summary>
- /// PRC 16K 146 x 215 mm
- /// </summary>
- Prc16K = 93,
-
- /// <summary>
- /// PRC 32K 97 x 151 mm
- /// </summary>
- Prc32K = 94,
-
- /// <summary>
- /// PRC 32K(Big) 97 x 151 mm
- /// </summary>
- Prc32KBig = 95,
-
- /// <summary>
- /// PRC Envelope #1 102 x 165 mm
- /// </summary>
- PrcEnvelope1 = 96,
-
- /// <summary>
- /// PRC Envelope #2 102 x 176 mm
- /// </summary>
- PrcEnvelope2 = 97,
-
- /// <summary>
- /// PRC Envelope #3 125 x 176 mm
- /// </summary>
- PrcEnvelope3 = 98,
-
- /// <summary>
- /// PRC Envelope #4 110 x 208 mm
- /// </summary>
- PrcEnvelope4 = 99,
-
- /// <summary>
- /// PRC Envelope #5 110 x 220 mm
- /// </summary>
- PrcEnvelope5 = 100,
-
- /// <summary>
- /// PRC Envelope #6 120 x 230 mm
- /// </summary>
- PrcEnvelope6 = 101,
-
- /// <summary>
- /// PRC Envelope #7 160 x 230 mm
- /// </summary>
- PrcEnvelope7 = 102,
-
- /// <summary>
- /// PRC Envelope #8 120 x 309 mm
- /// </summary>
- PrcEnvelope8 = 103,
-
- /// <summary>
- /// PRC Envelope #9 229 x 324 mm
- /// </summary>
- PrcEnvelope9 = 104,
-
- /// <summary>
- /// PRC Envelope #10 324 x 458 mm
- /// </summary>
- PrcEnvelope10 = 105,
-
- /// <summary>
- /// PRC 16K Rotated
- /// </summary>
- P16KRotated = 106,
-
- /// <summary>
- /// PRC 32K Rotated
- /// </summary>
- P32KRotated = 107,
-
- /// <summary>
- /// PRC 32K(Big) Rotated
- /// </summary>
- P32KBigRotated = 108,
-
- /// <summary>
- /// PRC Envelope #1 Rotated 165 x 102 mm
- /// </summary>
- PrcEnvelope1Rotated = 109,
-
- /// <summary>
- /// PRC Envelope #2 Rotated 176 x 102 mm
- /// </summary>
- PrcEnvelope2Rotated = 110,
-
- /// <summary>
- /// PRC Envelope #3 Rotated 176 x 125 mm
- /// </summary>
- PrcEnvelope3Rotated = 111,
-
- /// <summary>
- /// PRC Envelope #4 Rotated 208 x 110 mm
- /// </summary>
- PrcEnvelope4Rotated = 112,
-
- /// <summary>
- /// PRC Envelope #5 Rotated 220 x 110 mm
- /// </summary>
- PrcEnvelope5Rotated = 113,
-
- /// <summary>
- /// PRC Envelope #6 Rotated 230 x 120 mm
- /// </summary>
- PrcEnvelope6Rotated = 114,
-
- /// <summary>
- /// PRC Envelope #7 Rotated 230 x 160 mm
- /// </summary>
- PrcEnvelope7Rotated = 115,
-
- /// <summary>
- /// PRC Envelope #8 Rotated 309 x 120 mm
- /// </summary>
- PrcEnvelope8Rotated = 116,
-
- /// <summary>
- /// PRC Envelope #9 Rotated 324 x 229 mm
- /// </summary>
- PrcEnvelope9Rotated = 117,
-
- /// <summary>
- /// PRC Envelope #10 Rotated 458 x 324 mm
- /// </summary>
- PrcEnvelope10Rotated = 118,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// For printers, specifies the printer resolution.<para/>
- /// Either specify one of these pre-defined values or specify a positive device-dependent resolution in DPI.
- /// </summary>
- public enum PrinterPrintQuality : short
- {
- /// <summary>
- /// Draft-resolution printouts.
- /// </summary>
- Draft = -1,
-
- /// <summary>
- /// Low-resolution printouts.
- /// </summary>
- Low = -2,
-
- /// <summary>
- /// Medium-resolution printouts.
- /// </summary>
- Medium = -3,
-
- /// <summary>
- /// High-resolution printouts.
- /// </summary>
- High = -4,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies how TrueType fonts should be printed.
- /// </summary>
- public enum PrinterTrueTypeOption : short
- {
- /// <summary>
- /// Device will print TrueType fonts as graphics.
- /// </summary>
- Bitmap = 1,
-
- /// <summary>
- /// Device will download TrueType fonts.
- /// </summary>
- Download = 2,
-
- /// <summary>
- /// Device will substitute device fonts for TrueType fonts.
- /// </summary>
- SubstituteDevice = 3,
-
- /// <summary>
- /// Downloads TrueType fonts as outline soft fonts.
- /// </summary>
- DownloadOutline = 4,
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Flags used in <see cref="User32.Message.GetQueueStatus(QueueMessageTypes)"/>
- /// to specify the types of messages to check for.
- /// </summary>
- [Flags]
- public enum QueueMessageTypes : uint
- {
- /// <summary>
- /// A <see cref="WindowMessage.KeyUp"/>, <see cref="WindowMessage.KeyDown"/>,
- /// <see cref="WindowMessage.SystemKeyUp"/>, or <see cref="WindowMessage.SystemKeyDown"/> message
- /// is in the queue.
- /// </summary>
- Key = 0x0001,
-
- /// <summary>
- /// A <see cref="WindowMessage.MouseMove"/> message is in the queue.
- /// </summary>
- MouseMove = 0x0002,
-
- /// <summary>
- /// A mouse-button message (<see cref="WindowMessage.LButtonUp"/>,
- /// <see cref="WindowMessage.RButtonDown"/>, and so on).
- /// </summary>
- MouseButton = 0x0004,
-
- /// <summary>
- /// A posted message (other than those listed here) is in the queue.
- /// </summary>
- PostMessage = 0x0008,
-
- /// <summary>
- /// A <see cref="WindowMessage.Timer"/> message is in the queue.
- /// </summary>
- Timer = 0x0010,
-
- /// <summary>
- /// A <see cref="WindowMessage.Paint"/> message is in the queue.
- /// </summary>
- Paint = 0x0020,
-
- /// <summary>
- /// A message sent by another thread or application is in the queue.
- /// </summary>
- SendMessage = 0x0040,
-
- /// <summary>
- /// A <see cref="WindowMessage.Hotkey"/> message is in the queue.
- /// </summary>
- Hotkey = 0x0080,
-
- /// <summary>
- /// A posted message (other than those listed here) is in the queue.
- /// </summary>
- AllPostMessage = 0x0100,
-
- /// <summary>
- /// A raw input message is in the queue. For more information, see Raw Input.
- /// Windows XP and higher only.
- /// </summary>
- RawInput = 0x0400,
-
- /// <summary>
- /// A <see cref="WindowMessage.MouseMove"/> message or mouse-button message
- /// (<see cref="WindowMessage.LButtonUp"/>, <see cref="WindowMessage.RButtonDown"/>, and so on).
- /// </summary>
- Mouse = MouseMove | MouseButton,
-
- /// <summary>
- /// An input message is in the queue. This is composed of <see cref="Key"/>,
- /// <see cref="Mouse"/> and <see cref="RawInput"/>.
- /// Windows XP and higher only.
- /// </summary>
- Input = Mouse | Key | RawInput,
-
- /// <summary>
- /// An input message is in the queue. This is composed of <see cref="Key"/> and <see cref="Mouse"/>.
- /// Windows 2000 and earlier.
- /// </summary>
- InputLegacy = Mouse | Key,
-
- /// <summary>
- /// An input, <see cref="WindowMessage.Timer"/>, <see cref="WindowMessage.Paint"/>,
- /// <see cref="WindowMessage.Hotkey"/>, or posted message is in the queue.
- /// </summary>
- AllEvents = Input | PostMessage | Timer | Paint | Hotkey,
-
- /// <summary>
- /// Any message is in the queue.
- /// </summary>
- AllInput = Input | PostMessage | Timer | Paint | Hotkey | SendMessage
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="RawInputDevice"/> to specify how to interpret the data in the structure.
- /// </summary>
- [Flags]
- public enum RawInputDeviceFlags : uint
- {
- /// <summary>
- /// If set, this removes the top level collection from the inclusion list.
- /// This tells the operating system to stop reading from a device which matches the top level collection.
- /// </summary>
- Remove = 0x00000001,
-
- /// <summary>
- /// If set, this specifies the top level collections to exclude when reading a complete usage page.
- /// This flag only affects a TLC whose usage page is already specified with RawInputDeviceEnum.PAGEONLY.
- /// </summary>
- Exclude = 0x00000010,
-
- /// <summary>
- /// If set, this specifies all devices whose top level collection is from the specified UsagePage.
- /// Note that usUsage must be zero. To exclude a particular top level collection, use EXCLUDE.
- /// </summary>
- PageOnly = 0x00000020,
-
- /// <summary>
- /// If set, this prevents any devices specified by UsagePage or Usage from generating legacy messages.
- /// This is only for the mouse and keyboard. See RawInputDevice Remarks.
- /// </summary>
- NoLegacy = 0x00000030,
-
- /// <summary>
- /// If set, this enables the caller to receive the input even when the caller is not in the foreground.
- /// Note that Target must be specified in RawInputDevice.
- /// </summary>
- InputSink = 0x00000100,
-
- /// <summary>
- /// If set, the mouse button click does not activate the other window.
- /// </summary>
- CaptureMouse = 0x00000200, // effective when mouse nolegacy is specified, otherwise it would be an error
-
- /// <summary>
- /// If set, the application-defined keyboard device hotkeys are not handled.
- /// However, the system hotkeys; for example, ALT+TAB and CTRL+ALT+DEL, are still handled.
- /// By default, all keyboard hotkeys are handled.
- /// NOHOTKEYS can be specified even if NOLEGACY is not specified and Target is NULL in RawInputDevice.
- /// </summary>
- NoHotkeys = 0x00000200, // effective for keyboard.
-
- /// <summary>
- /// Microsoft Windows XP Service Pack 1 (SP1): If set, the application command keys are handled. APPKEYS can be
- /// specified only if NOLEGACY is specified for a keyboard device.
- /// </summary>
- AppKeys = 0x00000400, // effective for keyboard.
-
- /// <summary>
- /// If set, this enables the caller to receive input in the background only if the foreground application
- /// does not process it. In other words, if the foreground application is not registered for raw input,
- /// then the background application that is registered will receive the input.<para/>
- /// Only supported on Vista later.
- /// </summary>
- ExInputSink = 0x00001000,
-
- /// <summary>
- /// If set, this enables the caller to receive WM_INPUT_DEVICE_CHANGE notifications for device arrival and
- /// device removal.<para/>
- /// Only supported on Vista and later.
- /// </summary>
- DevNotify = 0x00002000
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the type of raw input device.
- /// </summary>
- public enum RawInputDeviceType : uint
- {
- /// <summary>
- /// Data comes from a mouse.
- /// </summary>
- Mouse = 0,
-
- /// <summary>
- /// Data comes from a keyboard.
- /// </summary>
- Keyboard = 1,
-
- /// <summary>
- /// Data comes from an HID that is not a keyboard or a mouse.
- /// </summary>
- Hid = 2
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Flags for scan code information.
- /// </summary>
- public enum RawKeyboardScanCodeFlags : ushort
- {
- /// <summary>
- /// The key is down.
- /// </summary>
- Make = 0x0,
-
- /// <summary>
- /// The key is up.
- /// </summary>
- Break = 0x1,
-
- /// <summary>
- /// The scan code has the E0 prefix.
- /// </summary>
- E0 = 0x2,
-
- /// <summary>
- /// The scan code has the E1 prefix.
- /// </summary>
- E1 = 0x4,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- TermsrvSetLed = 0x8,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- TermsrvShadow = 0x10
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the transition state of the mouse buttons.
- /// </summary>
- [Flags]
- public enum RawMouseButtonFlags : ushort
- {
- /// <summary>
- /// Left Button changed to down.
- /// </summary>
- LeftButtonDown = 0x0001,
-
- /// <summary>
- /// Left Button changed to up.
- /// </summary>
- LeftButtonUp = 0x0002,
-
- /// <summary>
- /// Right Button changed to down.
- /// </summary>
- RightButtonDown = 0x0004,
-
- /// <summary>
- /// Right Button changed to up.
- /// </summary>
- RightButtonUp = 0x0008,
-
- /// <summary>
- /// Middle Button changed to down.
- /// </summary>
- MiddleButtonDown = 0x0010,
-
- /// <summary>
- /// Middle Button changed to up.
- /// </summary>
- MiddleButtonUp = 0x0020,
-
- /// <summary>
- /// Same as <see cref="LeftButtonDown"/>.
- /// </summary>
- Button1Down = LeftButtonDown,
-
- /// <summary>
- /// Same as <see cref="LeftButtonUp"/>.
- /// </summary>
- Button1Up = LeftButtonUp,
-
- /// <summary>
- /// Same as <see cref="RightButtonDown"/>.
- /// </summary>
- Button2Down = RightButtonDown,
-
- /// <summary>
- /// Same as <see cref="RightButtonUp"/>.
- /// </summary>
- Button2Up = RightButtonUp,
-
- /// <summary>
- /// Same as <see cref="MiddleButtonDown"/>.
- /// </summary>
- Button3Down = MiddleButtonDown,
-
- /// <summary>
- /// Same as <see cref="MiddleButtonUp"/>.
- /// </summary>
- Button3Up = MiddleButtonUp,
-
- /// <summary>
- /// XBUTTON1 changed to down.
- /// </summary>
- Button4Down = 0x0040,
-
- /// <summary>
- /// XBUTTON1 changed to up.
- /// </summary>
- Button4Up = 0x0080,
-
- /// <summary>
- /// XBUTTON2 changed to down.
- /// </summary>
- Button5Down = 0x0100,
-
- /// <summary>
- /// XBUTTON2 changed to up.
- /// </summary>
- Button5Up = 0x0200,
-
- /// <summary>
- /// Raw input comes from a mouse wheel. The wheel delta is stored in <see cref="RawMouse.ButtonData"/>.
- /// </summary>
- Wheel = 0x0400,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- HWheel = 0x0800
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Mouse indicator flags (found in winuser.h).
- /// </summary>
- [Flags]
- public enum RawMouseFlags : ushort
- {
- /// <summary>
- /// LastX/Y indicate relative motion.
- /// </summary>
- MouseMoveRelative = 0x00,
-
- /// <summary>
- /// LastX/Y indicate absolute motion.
- /// </summary>
- MouseMoveAbsolute = 0x01,
-
- /// <summary>
- /// The coordinates are mapped to the virtual desktop.
- /// </summary>
- MouseVirtualDesktop = 0x02,
-
- /// <summary>
- /// Requery for mouse attributes.
- /// </summary>
- MouseAttributesChanged = 0x04
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Window sizing and positioning flags.
- /// </summary>
- [Flags]
- public enum SetWindowPosFlags : uint
- {
- /// <summary>
- /// Retains the current size (ignores the cx and cy parameters).
- /// </summary>
- NoSize = 0x0001,
-
- /// <summary>
- /// Retains the current position (ignores the x and y parameters).
- /// </summary>
- NoMove = 0x0002,
-
- /// <summary>
- /// Retains the current Z order (ignores the hwndInsertAfter parameter).
- /// </summary>
- NoZOrder = 0x0004,
-
- /// <summary>
- /// Does not redraw changes. If this flag is set, no repainting of any kind occurs.
- /// This applies to the client area, the nonclient area (including the title bar and scroll bars),
- /// and any part of the parent window uncovered as a result of the window being moved.
- /// When this flag is set, the application must explicitly invalidate or redraw any parts
- /// of the window and parent window that need redrawing.
- /// </summary>
- NoRedraw = 0x0008,
-
- /// <summary>
- /// Does not activate the window. If this flag is not set,
- /// the window is activated and moved to the top of either the topmost or non-topmost group
- /// (depending on the setting of the hwndInsertAfter member).
- /// </summary>
- NoActivate = 0x0010,
-
- /// <summary>
- /// Sends a <see cref="WindowMessage.NCCalcSize"/> message to the window, even if the window's size is not
- /// being changed. If this flag is not specified, <see cref="WindowMessage.NCCalcSize"/> is sent only when
- /// the window's size is being changed.
- /// </summary>
- FrameChanged = 0x0020,
-
- /// <summary>
- /// Displays the window.
- /// </summary>
- ShowWindow = 0x0040,
-
- /// <summary>
- /// Hides the window.
- /// </summary>
- HideWindow = 0x0080,
-
- /// <summary>
- /// Discards the entire contents of the client area. If this flag is not specified,
- /// the valid contents of the client area are saved and copied back into the client area
- /// after the window is sized or repositioned.
- /// </summary>
- NoCopyBits = 0x0100,
-
- /// <summary>
- /// Does not change the owner window's position in the Z order.
- /// </summary>
- NoOwnerZOrder = 0x0200,
-
- /// <summary>
- /// Prevents the window from receiving the <see cref="WindowMessage.WindowPosChanging"/> message.
- /// </summary>
- NoSendChanging = 0x0400,
-
- /// <summary>
- /// Draws a frame (defined in the window's class description) around the window.
- /// </summary>
- DrawFrame = FrameChanged,
-
- /// <summary>
- /// Same as the <see cref="NoOwnerZOrder"/> flag.
- /// </summary>
- NoReposition = NoOwnerZOrder,
-
- /// <summary>
- /// Prevents generation of the <see cref="WindowMessage.SyncPaint"/> message.
- /// </summary>
- DeferErase = 0x2000,
-
- /// <summary>
- /// If the calling thread and the thread that owns the window are attached to different input queues,
- /// the system posts the request to the thread that owns the window. This prevents the calling thread
- /// from blocking its execution while other threads process the request.
- /// </summary>
- AsyncWindowPos = 0x4000
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies a set of pre-defined values for special behavior in <see cref="User32.Window.SetWindowPos(
- /// System.IntPtr, SetWindowPosHwndEnum, int, int, int, int, SetWindowPosFlags)"/>.
- /// </summary>
- public enum SetWindowPosHwndEnum
- {
- /// <summary>
- /// Places the window above all non-topmost windows (that is, behind all topmost windows).
- /// This flag has no effect if the window is already a non-topmost window.
- /// </summary>
- NoTopmost = -2,
-
- /// <summary>
- /// Places the window above all non-topmost windows.
- /// The window maintains its topmost position even when it is deactivated.
- /// </summary>
- Topmost = -1,
-
- /// <summary>
- /// Places the window at the top of the Z order.
- /// </summary>
- Top = 0,
-
- /// <summary>
- /// Places the window at the bottom of the Z order. If the hWnd parameter identifies a topmost window,
- /// the window loses its topmost status and is placed at the bottom of all other windows.
- /// </summary>
- Bottom = 1,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="User32.Window.ShowWindow(System.IntPtr, ShowWindowCommand)"/> to control
- /// how a window is to be shown.
- /// </summary>
- public enum ShowWindowCommand
- {
- /// <summary>
- /// Hides the window and activates another window.
- /// </summary>
- Hide = 0,
-
- /// <summary>
- /// Activates and displays a window. If the window is minimized or maximized, the system restores it to
- /// its original size and position.
- /// An application should specify this flag when displaying the window for the first time.
- /// </summary>
- ShowNormal = 1,
-
- /// <summary>
- /// Activates the window and displays it as a minimized window.
- /// </summary>
- ShowMinimized = 2,
-
- /// <summary>
- /// Activates the window and displays it as a maximized window.
- /// </summary>
- ShowMaximized = 3,
-
- /// <summary>
- /// Maximizes the specified window.
- /// </summary>
- Maximize = 3,
-
- /// <summary>
- /// Displays a window in its most recent size and position. This value is similar to <see cref="ShowNormal"/>,
- /// except that the window is not activated.
- /// </summary>
- ShowNoActivate = 4,
-
- /// <summary>
- /// Activates the window and displays it in its current size and position.
- /// </summary>
- Show = 5,
-
- /// <summary>
- /// Minimizes the specified window and activates the next top-level window in the Z order.
- /// </summary>
- Minimize = 6,
-
- /// <summary>
- /// Displays the window as a minimized window. This value is similar to <see cref="ShowMinimized"/>,
- /// except the window is not activated.
- /// </summary>
- ShowMinimizedNoActivate = 7,
-
- /// <summary>
- /// Displays the window in its current size and position. This value is similar to <see cref="ShowNormal"/>,
- /// except the window is not activated.
- /// </summary>
- ShowNA = 8,
-
- /// <summary>
- /// Activates and displays the window. If the window is minimized or maximized, the system restores it to
- /// its original size and position.
- /// An application should specify this flag when restoring a minimized window.
- /// </summary>
- Restore = 9,
-
- /// <summary>
- /// Sets the show state based on the <see cref="ShowWindowCommand"/> value specified in the STARTUPINFO
- /// structure passed to the CreateProcess function by the program that started the application.
- /// </summary>
- ShowDefault = 10,
-
- /// <summary>
- /// Windows 2000/XP: Minimizes a window, even if the thread that owns the window is not responding.
- /// This flag should only be used when minimizing windows from a different thread.
- /// </summary>
- ForceMinimize = 11
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used in <see cref="TrackMouseEvent"/> to request specific services.
- /// </summary>
- [Flags]
- public enum TrackMouseEvents : uint
- {
- /// <summary>
- /// The caller wants hover notification. Notification is delivered as a <see cref="WindowMessage.MouseHover"/>
- /// message.<para/>
- /// If the caller requests hover tracking while hover tracking is already active,
- /// the hover timer will be reset.<para/>
- /// This flag is ignored if the mouse pointer is not over the specified window or area.
- /// </summary>
- Hover = 0x00000001,
-
- /// <summary>
- /// The caller wants leave notification. Notification is delivered as a <see cref="WindowMessage.MouseLeave"/>
- /// message. If the mouse is not over the specified window or area,
- /// a leave notification is generated immediately and no further tracking is performed.
- /// </summary>
- Leave = 0x00000002,
-
- /// <summary>
- /// The caller wants hover and leave notification for the nonclient areas.
- /// Notification is delivered as <see cref="WindowMessage.NCMouseHover"/>
- /// and <see cref="WindowMessage.NCMouseLeave"/> messages.
- /// </summary>
- NonClient = 0x00000010,
-
- /// <summary>
- /// The function fills in the structure instead of treating it as a tracking request.
- /// The structure is filled such that had that structure been passed to TrackMouseEvent,
- /// it would generate the current tracking. The only anomaly is that the hover time-out
- /// returned is always the actual time-out and not <see cref="TrackMouseEvent.DefaultHoverTime"/>, if
- /// <see cref="TrackMouseEvent.DefaultHoverTime"/> was specified during the original
- /// <see cref="User32.Mouse.TrackMouseEvent"/> request.
- /// </summary>
- Query = 0x40000000,
-
- /// <summary>
- /// The caller wants to cancel a prior tracking request. The caller should also specify the type
- /// of tracking that it wants to cancel. For example, to cancel hover tracking, the caller must
- /// pass the <see cref="Cancel"/> and <see cref="Hover"/> flags.
- /// </summary>
- Cancel = 0x80000000
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Lists all virtual keys.
- /// </summary>
- public enum VirtualKey : uint
- {
- /// <summary>
- /// Left mouse button.
- /// </summary>
- LButton = 0x01,
-
- /// <summary>
- /// Right mouse button.
- /// </summary>
- RButton = 0x02,
-
- /// <summary>
- /// Control-break processing.
- /// </summary>
- Cancel = 0x03,
-
- /// <summary>
- /// Middle mouse button (three-button mouse).<para/>
- /// Not contiguous with L and R Button.
- /// </summary>
- MButton = 0x04,
-
- /// <summary>
- /// X1 mouse button.
- /// Not contiguous with L and R Button.
- /// </summary>
- XButton1 = 0x05,
-
- /// <summary>
- /// X2 mouse button.
- /// Not contiguous with L and R Button.
- /// </summary>
- XButton2 = 0x06,
-
- /*
- * 0x07: Undefined
- */
-
- /// <summary>
- /// BACKSPACE key.
- /// </summary>
- Back = 0x08,
-
- /// <summary>
- /// TAB key.
- /// </summary>
- Tab = 0x09,
-
- /*
- * 0x0A - 0x0B: Reserved
- */
-
- /// <summary>
- /// CLEAR key.
- /// </summary>
- Clear = 0x0C,
-
- /// <summary>
- /// ENTER key.
- /// </summary>
- Return = 0x0D,
-
- /*
- * 0x0E - 0x0F: Undefined
- */
-
- /// <summary>
- /// SHIFT key.
- /// </summary>
- Shift = 0x10,
-
- /// <summary>
- /// CTRL key.
- /// </summary>
- Control = 0x11,
-
- /// <summary>
- /// ALT key.
- /// </summary>
- Menu = 0x12,
-
- /// <summary>
- /// PAUSE key.
- /// </summary>
- Pause = 0x13,
-
- /// <summary>
- /// CAPS LOCK key
- /// </summary>
- Capital = 0x14,
-
- /// <summary>
- /// IME Kana mode.
- /// </summary>
- Kana = 0x15,
-
- /// <summary>
- /// IME Hanguel mode (maintained for compatibility; use <see cref="Hangul"/>).
- /// </summary>
- Hangeul = 0x15,
-
- /// <summary>
- /// IME Hangul mode.
- /// </summary>
- Hangul = 0x15,
-
- /*
- * 0x16: Undefined
- */
-
- /// <summary>
- /// IME Junja mode
- /// </summary>
- Junja = 0x17,
-
- /// <summary>
- /// IME final mode.
- /// </summary>
- Final = 0x18,
-
- /// <summary>
- /// IME Hanja mode.
- /// </summary>
- Hanja = 0x19,
-
- /// <summary>
- /// IME Kanji mode.
- /// </summary>
- Kanji = 0x19,
-
- /*
- * 0x1A: Undefined
- */
-
- /// <summary>
- /// ESC key
- /// </summary>
- Escape = 0x1B,
-
- /// <summary>
- /// IME convert.
- /// </summary>
- Convert = 0x1C,
-
- /// <summary>
- /// IME nonconvert.
- /// </summary>
- NonConvert = 0x1D,
-
- /// <summary>
- /// IME accept.
- /// </summary>
- Accept = 0x1E,
-
- /// <summary>
- /// IME mode change request.
- /// </summary>
- ModeChange = 0x1F,
-
- /// <summary>
- /// SPACEBAR.
- /// </summary>
- Space = 0x20,
-
- /// <summary>
- /// PAGE UP key.
- /// </summary>
- Prior = 0x21,
-
- /// <summary>
- /// PAGE DOWN key.
- /// </summary>
- Next = 0x22,
-
- /// <summary>
- /// END key.
- /// </summary>
- End = 0x23,
-
- /// <summary>
- /// HOME key.
- /// </summary>
- Home = 0x24,
-
- /// <summary>
- /// LEFT ARROW key.
- /// </summary>
- Left = 0x25,
-
- /// <summary>
- /// UP ARROW key.
- /// </summary>
- Up = 0x26,
-
- /// <summary>
- /// RIGHT ARROW key.
- /// </summary>
- Right = 0x27,
-
- /// <summary>
- /// DOWN ARROW key.
- /// </summary>
- Down = 0x28,
-
- /// <summary>
- /// SELECT key.
- /// </summary>
- Select = 0x29,
-
- /// <summary>
- /// PRINT key.
- /// </summary>
- Print = 0x2A,
-
- /// <summary>
- /// EXECUTE key.
- /// </summary>
- Execute = 0x2B,
-
- /// <summary>
- /// PRINT SCREEN key.
- /// </summary>
- Snapshot = 0x2C,
-
- /// <summary>
- /// INS key.
- /// </summary>
- Insert = 0x2D,
-
- /// <summary>
- /// DEL key.
- /// </summary>
- Delete = 0x2E,
-
- /// <summary>
- /// HELP key.
- /// </summary>
- Help = 0x2F,
-
- /*
- * 0 - 9 are the same as ASCII '0' - '9' (0x30 - 0x39)
- * 0x40: Unassigned
- * A - Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
- */
-
- /// <summary>
- /// Left Windows key (Natural keyboard).
- /// </summary>
- LWin = 0x5B,
-
- /// <summary>
- /// Right Windows key (Natural keyboard).
- /// </summary>
- RWin = 0x5C,
-
- /// <summary>
- /// Applications key (Natural keyboard).
- /// </summary>
- Apps = 0x5D,
-
- /*
- * 0x5E: Reserved
- */
-
- /// <summary>
- /// Computer Sleep key.
- /// </summary>
- Sleep = 0x5F,
-
- /// <summary>
- /// Numeric keypad 0 key.
- /// </summary>
- Numpad0 = 0x60,
-
- /// <summary>
- /// Numeric keypad 1 key
- /// </summary>
- Numpad1 = 0x61,
-
- /// <summary>
- /// Numeric keypad 2 key
- /// </summary>
- Numpad2 = 0x62,
-
- /// <summary>
- /// Numeric keypad 3 key
- /// </summary>
- Numpad3 = 0x63,
-
- /// <summary>
- /// Numeric keypad 4 key
- /// </summary>
- Numpad4 = 0x64,
-
- /// <summary>
- /// Numeric keypad 5 key
- /// </summary>
- Numpad5 = 0x65,
-
- /// <summary>
- /// Numeric keypad 6 key
- /// </summary>
- Numpad6 = 0x66,
-
- /// <summary>
- /// Numeric keypad 7 key
- /// </summary>
- Numpad7 = 0x67,
-
- /// <summary>
- /// Numeric keypad 8 key
- /// </summary>
- Numpad8 = 0x68,
-
- /// <summary>
- /// Numeric keypad 9 key
- /// </summary>
- Numpad9 = 0x69,
-
- /// <summary>
- /// Multiply key.
- /// </summary>
- Multiply = 0x6A,
-
- /// <summary>
- /// Add key.
- /// </summary>
- Add = 0x6B,
-
- /// <summary>
- /// Separator key.
- /// </summary>
- Separator = 0x6C,
-
- /// <summary>
- /// Subtract key.
- /// </summary>
- Subtract = 0x6D,
-
- /// <summary>
- /// Decimal key.
- /// </summary>
- Decimal = 0x6E,
-
- /// <summary>
- /// Divide key.
- /// </summary>
- Divide = 0x6F,
-
- /// <summary>
- /// F1 key.
- /// </summary>
- F1 = 0x70,
-
- /// <summary>
- /// F2 key.
- /// </summary>
- F2 = 0x71,
-
- /// <summary>
- /// F3 key.
- /// </summary>
- F3 = 0x72,
-
- /// <summary>
- /// F4 key.
- /// </summary>
- F4 = 0x73,
-
- /// <summary>
- /// F5 key.
- /// </summary>
- F5 = 0x74,
-
- /// <summary>
- /// F6 key.
- /// </summary>
- F6 = 0x75,
-
- /// <summary>
- /// F7 key.
- /// </summary>
- F7 = 0x76,
-
- /// <summary>
- /// F8 key.
- /// </summary>
- F8 = 0x77,
-
- /// <summary>
- /// F9 key.
- /// </summary>
- F9 = 0x78,
-
- /// <summary>
- /// F10 key.
- /// </summary>
- F10 = 0x79,
-
- /// <summary>
- /// F11 key.
- /// </summary>
- F11 = 0x7A,
-
- /// <summary>
- /// F12 key.
- /// </summary>
- F12 = 0x7B,
-
- /// <summary>
- /// F13 key.
- /// </summary>
- F13 = 0x7C,
-
- /// <summary>
- /// F14 key.
- /// </summary>
- F14 = 0x7D,
-
- /// <summary>
- /// F15 key.
- /// </summary>
- F15 = 0x7E,
-
- /// <summary>
- /// F16 key.
- /// </summary>
- F16 = 0x7F,
-
- /// <summary>
- /// F17 key.
- /// </summary>
- F17 = 0x80,
-
- /// <summary>
- /// F18 key.
- /// </summary>
- F18 = 0x81,
-
- /// <summary>
- /// F19 key.
- /// </summary>
- F19 = 0x82,
-
- /// <summary>
- /// F20 key.
- /// </summary>
- F20 = 0x83,
-
- /// <summary>
- /// F21 key.
- /// </summary>
- F21 = 0x84,
-
- /// <summary>
- /// F22 key.
- /// </summary>
- F22 = 0x85,
-
- /// <summary>
- /// F23 key.
- /// </summary>
- F23 = 0x86,
-
- /// <summary>
- /// F24 key.
- /// </summary>
- F24 = 0x87,
-
- /*
- * 0x88 - 0x8F: Unassigned
- */
-
- /// <summary>
- /// NUM LOCK key.
- /// </summary>
- NumLock = 0x90,
-
- /// <summary>
- /// SCROLL LOCK key.
- /// </summary>
- Scroll = 0x91,
-
- /*
- * 0x92 - 0x96: OEM specific
- */
-
- /*
- * 0x97 - 0x9F: Unassigned
- */
-
- /*
- * L* & R* - left and right Alt, Ctrl and Shift virtual keys.
- * Used only as parameters to GetAsyncKeyState() and GetKeyState().
- * No other API or message will distinguish left and right keys in this way.
- */
-
- /// <summary>
- /// Left SHIFT key.
- /// </summary>
- LShift = 0xA0,
-
- /// <summary>
- /// Right SHIFT key.
- /// </summary>
- RShift = 0xA1,
-
- /// <summary>
- /// Left CONTROL key.
- /// </summary>
- LControl = 0xA2,
-
- /// <summary>
- /// Right CONTROL key.
- /// </summary>
- RControl = 0xA3,
-
- /// <summary>
- /// Left MENU key.
- /// </summary>
- LMenu = 0xA4,
-
- /// <summary>
- /// Right MENU key.
- /// </summary>
- RMenu = 0xA5,
-
- /// <summary>
- /// Browser Back key.
- /// </summary>
- BrowserBack = 0xA6,
-
- /// <summary>
- /// Browser Forward key
- /// </summary>
- BrowserForward = 0xA7,
-
- /// <summary>
- /// Browser Refresh key.
- /// </summary>
- BrowserRefresh = 0xA8,
-
- /// <summary>
- /// Browser Stop key.
- /// </summary>
- BrowserStop = 0xA9,
-
- /// <summary>
- /// Browser Search key.
- /// </summary>
- BrowserSearch = 0xAA,
-
- /// <summary>
- /// Browser Favorites key.
- /// </summary>
- BrowserFavorites = 0xAB,
-
- /// <summary>
- /// Browser Start and Home key.
- /// </summary>
- BrowserHome = 0xAC,
-
- /// <summary>
- /// Volume Mute key.
- /// </summary>
- VolumeMute = 0xAD,
-
- /// <summary>
- /// Volume Down key.
- /// </summary>
- VolumeDown = 0xAE,
-
- /// <summary>
- /// Volume Up key.
- /// </summary>
- VolumeUp = 0xAF,
-
- /// <summary>
- /// Next Track key.
- /// </summary>
- MediaNextTrack = 0xB0,
-
- /// <summary>
- /// Previous Track key.
- /// </summary>
- MediaPreviousTrack = 0xB1,
-
- /// <summary>
- /// Stop Media key.
- /// </summary>
- MediaStop = 0xB2,
-
- /// <summary>
- /// Play/Pause Media key.
- /// </summary>
- MediaPlayPause = 0xB3,
-
- /// <summary>
- /// Start Mail key.
- /// </summary>
- LaunchMail = 0xB4,
-
- /// <summary>
- /// Select Media key.
- /// </summary>
- LaunchMediaSelect = 0xB5,
-
- /// <summary>
- /// Start Application 1 key.
- /// </summary>
- LaunchApp1 = 0xB6,
-
- /// <summary>
- /// Start Application 2 key.
- /// </summary>
- LaunchApp2 = 0xB7,
-
- /*
- * 0xB8 - 0xB9 : reserved
- */
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the ';:' key.
- /// </summary>
- Oem1 = 0xBA,
-
- /// <summary>
- /// For any country/region, the '+' key.
- /// </summary>
- OemPlus = 0xBB,
-
- /// <summary>
- /// For any country/region, the ',' key.
- /// </summary>
- OemComma = 0xBC,
-
- /// <summary>
- /// For any country/region, the '-' key.
- /// </summary>
- OemMinus = 0xBD,
-
- /// <summary>
- /// For any country/region, the '.' key.
- /// </summary>
- OemPeriod = 0xBE,
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the '/?' key.
- /// </summary>
- Oem2 = 0xBF,
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the '`~' key.
- /// </summary>
- Oem3 = 0xC0,
-
- /*
- * 0xC1 - 0xD7: Reserved
- */
-
- /*
- * 0xD8 - 0xDA: Unassigned
- */
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the '[{' key
- /// </summary>
- Oem4 = 0xDB,
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the '\|' key
- /// </summary>
- Oem5 = 0xDC,
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the ']}' key
- /// </summary>
- Oem6 = 0xDD,
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// For the US standard keyboard, the 'single-quote/double-quote' key
- /// </summary>
- Oem7 = 0xDE,
-
- /// <summary>
- /// Used for miscellaneous characters; it can vary by keyboard.
- /// </summary>
- Oem8 = 0xDF,
-
- /*
- * 0xE0: Reserved
- */
-
- /*
- * Various extended or enhanced keyboards
- */
-
- /// <summary>
- /// OEM specific.
- /// 'AX' key on Japanese AX keyboard.
- /// </summary>
- OemAX = 0xE1,
-
- /// <summary>
- /// Either the angle bracket key or the backslash key on the RT 102-key keyboard.
- /// </summary>
- Oem102 = 0xE2,
-
- /// <summary>
- /// OEM specific.
- /// Help key on ICO.
- /// </summary>
- IcoHelp = 0xE3,
-
- /// <summary>
- /// OEM specific.
- /// 00 key on ICO.
- /// </summary>
- Ico00 = 0xE4,
-
- /// <summary>
- /// IME PROCESS key.
- /// </summary>
- ProcessKey = 0xE5,
-
- /// <summary>
- /// OEM specific.
- /// Clear key on ICO.
- /// </summary>
- IcoClear = 0xE6,
-
- /// <summary>
- /// Used to pass Unicode characters as if they were keystrokes. The <see cref="Packet"/> key is
- /// the low word of a 32-bit Virtual Key value used for non-keyboard input methods.
- /// </summary>
- Packet = 0xE7,
-
- /*
- * 0xE8: Unassigned
- */
-
- /*
- * Nokia/Ericsson definitions
- */
-
- /// <summary>
- /// OEM specific Reset key.
- /// </summary>
- OemReset = 0xE9,
-
- /// <summary>
- /// OEM specific Jump key.
- /// </summary>
- OemJump = 0xEA,
-
- /// <summary>
- /// OEM specific PA1 key.
- /// </summary>
- OemPA1 = 0xEB,
-
- /// <summary>
- /// OEM specific PA2 key.
- /// </summary>
- OemPA2 = 0xEC,
-
- /// <summary>
- /// OEM specific PA3 key.
- /// </summary>
- OemPA3 = 0xED,
-
- /// <summary>
- /// OEM specific WSCtrl key.
- /// </summary>
- OemWSCtrl = 0xEE,
-
- /// <summary>
- /// OEM specific CUseL key.
- /// </summary>
- OemCUseL = 0xEF,
-
- /// <summary>
- /// OEM specific attn key.
- /// </summary>
- OemAttn = 0xF0,
-
- /// <summary>
- /// OEM specific Finish key.
- /// </summary>
- OemFinish = 0xF1,
-
- /// <summary>
- /// OEM specific Copy key.
- /// </summary>
- OemCopy = 0xF2,
-
- /// <summary>
- /// OEM specific Auto key.
- /// </summary>
- OemAuto = 0xF3,
-
- /// <summary>
- /// OEM specific Enlw key.
- /// </summary>
- OemEnlw = 0xF4,
-
- /// <summary>
- /// OEM specific Backtab key.
- /// </summary>
- OemBacktab = 0xF5,
-
- /// <summary>
- /// Attn key.
- /// </summary>
- Attn = 0xF6,
-
- /// <summary>
- /// CrSel key.
- /// </summary>
- CrSel = 0xF7,
-
- /// <summary>
- /// ExSel key.
- /// </summary>
- ExSel = 0xF8,
-
- /// <summary>
- /// Erase EOF key.
- /// </summary>
- ErEof = 0xF9,
-
- /// <summary>
- /// Play key.
- /// </summary>
- Play = 0xFA,
-
- /// <summary>
- /// Zoom key.
- /// </summary>
- Zoom = 0xFB,
-
- /// <summary>
- /// Reserved.
- /// </summary>
- NoName = 0xFC,
-
- /// <summary>
- /// PA1 key.
- /// </summary>
- PA1 = 0xFD,
-
- /// <summary>
- /// Clear key.
- /// </summary>
- OemClear = 0xFE,
-
- /// <summary>
- /// The highest possible value for virtual keys.
- /// </summary>
- Last = 0xFF,
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines additional elements of the window class.
- /// </summary>
- [Flags]
- public enum WindowClassStyles : uint
- {
- /// <summary>
- /// Redraws the entire window if a movement or size adjustment changes the height of the client area.
- /// </summary>
- VRedraw = 0x0001,
-
- /// <summary>
- /// Redraws the entire window if a movement or size adjustment changes the width of the client area.
- /// </summary>
- HRedraw = 0x0002,
-
- /// <summary>
- /// Sends a double-click message to the window procedure when the user double-clicks
- /// the mouse while the cursor is within a window belonging to the class.
- /// </summary>
- DoubleClicks = 0x0008,
-
- /// <summary>
- /// Allocates a unique device context for each window in the class.
- /// </summary>
- OwnDeviceContext = 0x0020,
-
- /// <summary>
- /// Allocates one device context to be shared by all windows in the class. Because window classes are process
- /// specific, it is possible for multiple threads of an application to create a window of the same class.
- /// It is also possible for the threads to attempt to use the device context simultaneously. When this
- /// happens, the system allows only one thread to successfully finish its drawing operation.
- /// </summary>
- ClassDeviceContext = 0x0040,
-
- /// <summary>
- /// Sets the clipping rectangle of the child window to that of the parent window so that the child can draw on
- /// the parent. A window with the <see cref="ParentDeviceContext"/> style bit receives a regular device context
- /// from the system's cache of device contexts. It does not give the child the parent's device context or
- /// device context settings. Specifying <see cref="ParentDeviceContext"/> enhances an application's
- /// performance.
- /// </summary>
- ParentDeviceContext = 0x0080,
-
- /// <summary>
- /// Disables Close on the window menu.
- /// </summary>
- NoClose = 0x0200,
-
- /// <summary>
- /// Saves, as a bitmap, the portion of the screen image obscured by a window of this class. When the window is
- /// removed, the system uses the saved bitmap to restore the screen image, including other windows that were
- /// obscured. Therefore, the system does not send <see cref="WindowMessage.Paint"/> to windows that were
- /// obscured if the memory used by the bitmap has not been discarded and if other screen actions
- /// have not invalidated the stored image.<para/>
- /// This style is useful for small windows (for example, menus or dialog boxes) that are displayed briefly
- /// and then removed before other screen activity takes place. This style increases the time required to
- /// display the window, because the system must first allocate memory to store the bitmap.
- /// </summary>
- SaveBits = 0x0800,
-
- /// <summary>
- /// Aligns the window's client area on a byte boundary (in the x direction).
- /// This style affects the width of the window and its horizontal placement on the display.
- /// </summary>
- ByteAlignClient = 0x1000,
-
- /// <summary>
- /// Aligns the window on a byte boundary (in the x direction).
- /// This style affects the width of the window and its horizontal placement on the display.
- /// </summary>
- ByteAlignWindow = 0x2000,
-
- /// <summary>
- /// Indicates that the window class is an application global class. For more information, see the
- /// "Application Global Classes" section of About Window Classes.
- /// </summary>
- GlobalClass = 0x4000,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- Ime = 0x00010000,
-
- /// <summary>
- /// Enables the drop shadow effect on a window. The effect is turned on and off through SPI_SETDROPSHADOW.
- /// Typically, this is enabled for small, short-lived windows such as menus to emphasize their Z-order
- /// relationship to other windows. Windows created from a class with this style must be top-level windows;
- /// they may not be child windows.
- /// </summary>
- DropShadow = 0x00020000
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies the different types of window messages.
- /// </summary>
- public enum WindowMessage : uint
- {
- /// <summary>
- /// Performs no operation. An application sends the <see cref="Null"/> message if it wants to
- /// post a message that the recipient window will ignore.
- /// </summary>
- Null = 0x0000,
-
- /// <summary>
- /// Sent when an application requests that a window be created by calling the
- /// <see cref="User32.Window.CreateWindowEx(ExtendedWindowStyles, string, string,
- /// WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/> or CreateWindow function.
- /// (The message is sent before the function returns.) The window procedure of the
- /// new window receives this message after the window is created, but before the window becomes visible.
- /// </summary>
- Create = 0x0001,
-
- /// <summary>
- /// Sent when a window is being destroyed. It is sent to the window procedure of the window being destroyed
- /// after the window is removed from the screen.<para/>
- /// This message is sent first to the window being destroyed and then to the child windows (if any) as they
- /// are destroyed. During the processing of the message, it can be assumed that all child windows still exist.
- /// </summary>
- Destroy = 0x0002,
-
- /// <summary>
- /// Sent after a window has been moved.
- /// </summary>
- Move = 0x0003,
-
- /// <summary>
- /// Sent to a window after its size has changed.
- /// </summary>
- Size = 0x0005,
-
- /// <summary>
- /// Sent to both the window being activated and the window being deactivated. If the windows use the same
- /// input queue, the message is sent synchronously, first to the window procedure of the top-level window being
- /// deactivated, then to the window procedure of the top-level window being activated. If the windows use
- /// different input queues, the message is sent asynchronously, so the window is activated immediately.
- /// </summary>
- Activate = 0x0006,
-
- /// <summary>
- /// Sent to a window after it has gained the keyboard focus.
- /// </summary>
- SetFocus = 0x0007,
-
- /// <summary>
- /// Sent to a window immediately before it loses the keyboard focus.
- /// </summary>
- KillFocus = 0x0008,
-
- /// <summary>
- /// Sent when an application changes the enabled state of a window. It is sent to the window whose enabled
- /// state is changing. This message is sent before the EnableWindow function returns, but after the enabled
- /// state (<see cref="WindowStyles.Disabled"/> style bit) of the window has changed.
- /// </summary>
- Enable = 0x000A,
-
- /// <summary>
- /// An application sends the <see cref="SetRedraw"/> message to a window to allow changes in that window
- /// to be redrawn or to prevent changes in that window from being redrawn.
- /// </summary>
- SetRedraw = 0x000B,
-
- /// <summary>
- /// Sets the text of a window.
- /// </summary>
- SetText = 0x000C,
-
- /// <summary>
- /// Copies the text that corresponds to a window into a buffer provided by the caller.
- /// </summary>
- GetText = 0x000D,
-
- /// <summary>
- /// Determines the length, in characters, of the text associated with a window.
- /// </summary>
- GetTextLength = 0x000E,
-
- /// <summary>
- /// Sent when the system or another application makes a request to paint a portion of an application's window.
- /// The message is sent when the UpdateWindow or RedrawWindow function is called, or by the
- /// <see cref="User32.Message.DispatchMessage(ref Msg)"/> function when the application obtains a
- /// <see cref="WindowMessage.Paint"/> message by using the
- /// <see cref="User32.Message.GetMessage(out Msg, IntPtr, uint, uint)"/> or
- /// <see cref="User32.Message.PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function.
- /// </summary>
- Paint = 0x000F,
-
- /// <summary>
- /// Sent as a signal that a window or an application should terminate.
- /// </summary>
- Close = 0x0010,
-
- /// <summary>
- /// Sent when the user chooses to end the session or when an application calls one of the system shutdown
- /// functions. If any application returns zero, the session is not ended. The system stops sending
- /// <see cref="QueryEndSession"/> messages as soon as one application returns zero.
- /// </summary>
- QueryEndSession = 0x0011,
-
- /// <summary>
- /// Indicates a request to terminate an application, and is generated when the application calls the
- /// <see cref="User32.Message.PostQuitMessage(int)"/> function. This message causes the
- /// <see cref="User32.Message.GetMessage(out Msg, IntPtr, uint, uint)"/> function to return zero.
- /// </summary>
- Quit = 0x0012,
-
- /// <summary>
- /// Sent to an icon when the user requests that the window be restored to its previous size and position.
- /// </summary>
- QueryOpen = 0x0013,
-
- /// <summary>
- /// Sent when the window background must be erased (for example, when a window is resized).
- /// The message is sent to prepare an invalidated portion of a window for painting.
- /// </summary>
- EraseBackground = 0x0014,
-
- /// <summary>
- /// The <see cref="SystemColorChange"/> message is sent to all top-level windows when
- /// a change is made to a system color setting.
- /// </summary>
- SystemColorChange = 0x0015,
-
- /// <summary>
- /// Sent to an application after the system processes the results of the <see cref="QueryEndSession"/> message.
- /// The <see cref="EndSession"/> message informs the application whether the session is ending.
- /// </summary>
- EndSession = 0x0016,
-
- /// <summary>
- /// Sent to a window when the window is about to be hidden or shown.
- /// </summary>
- ShowWindow = 0x0018,
-
- /// <summary>
- /// Sent by an application to all top-level windows after making a change to the
- /// WIN.INI file. The SystemParametersInfo function sends this message
- /// after an application uses the function to change a setting in WIN.INI.
- /// </summary>
- WinIniChange = 0x001A,
-
- /// <summary>
- /// A message that is sent to all top-level windows when the SystemParametersInfo function changes
- /// a system-wide setting or when policy settings have changed.<para/>
- /// Applications should send <see cref="SettingChange"/> to all top-level windows when they make changes to
- /// system parameters. (This message cannot be sent directly to a window.) To send the
- /// <see cref="SettingChange"/> message to all top-level windows, use the SendMessageTimeout function with the
- /// hwnd parameter set to <see cref="User32.Message.BroadcastHandle"/>.
- /// </summary>
- SettingChange = WinIniChange,
-
- /// <summary>
- /// Sent to all top-level windows whenever the user changes device-mode settings.
- /// </summary>
- DeviceModeChange = 0x001B,
-
- /// <summary>
- /// Sent when a window belonging to a different application than the active window is about to be activated.
- /// The message is sent to the application whose window is being activated
- /// and to the application whose window is being deactivated.
- /// </summary>
- ActivateApp = 0x001C,
-
- /// <summary>
- /// Sent to all top-level windows in the system after changing the pool of font resources.
- /// </summary>
- FontChange = 0x001D,
-
- /// <summary>
- /// A message that is sent whenever there is a change in the system time.
- /// </summary>
- TimeChange = 0x001E,
-
- /// <summary>
- /// Sent to cancel certain modes, such as mouse capture. For example, the system sends this message to the
- /// active window when a dialog box or message box is displayed. Certain functions also send this message
- /// explicitly to the specified window regardless of whether it is the active window. For example,
- /// the EnableWindow function sends this message when disabling the specified window.
- /// </summary>
- CancelMode = 0x001F,
-
- /// <summary>
- /// Sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
- /// </summary>
- SetCursor = 0x0020,
-
- /// <summary>
- /// Sent when the cursor is in an inactive window and the user presses a mouse button. The parent window
- /// receives this message only if the child window passes it to the
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function.
- /// </summary>
- MouseActivate = 0x0021,
-
- /// <summary>
- /// Sent to a child window when the user clicks the window's title bar or
- /// when the window is activated, moved, or sized.
- /// </summary>
- ChildActivate = 0x0022,
-
- /// <summary>
- /// Sent by a computer-based training (CBT) application to separate user-input messages
- /// from other messages sent through the WH_JOURNALPLAYBACK procedure.
- /// </summary>
- QueueSync = 0x0023,
-
- /// <summary>
- /// Sent to a window when the size or position of the window is about to change. An application can use
- /// this message to override the window's default maximized size and position,
- /// or its default minimum or maximum tracking size.
- /// </summary>
- GetMinMaxInfo = 0x0024,
-
- /// <summary>
- /// Obsolete. Used in Windows NT 3.51 and earlier.
- /// </summary>
- PaintIcon = 0x0026,
-
- /// <summary>
- /// Obsolete. Used in Windows NT 3.51 and earlier.
- /// </summary>
- IconEraseBackground = 0x0027,
-
- /// <summary>
- /// Sent to a dialog box procedure to set the keyboard focus to a different control in the dialog box.
- /// </summary>
- NextDialogCtl = 0x0028,
-
- /// <summary>
- /// Sent from Print Manager whenever a job is added to or removed from the Print Manager queue.
- /// </summary>
- SpoolerStatus = 0x002A,
-
- /// <summary>
- /// Sent to the parent window of an owner-drawn button, combo box, list box, or menu when a
- /// visual aspect of the button, combo box, list box, or menu has changed.
- /// </summary>
- DrawItem = 0x002B,
-
- /// <summary>
- /// Sent to the owner window of a combo box, list box, list view control, or menu item when
- /// the control or menu is created.
- /// </summary>
- MeasureItem = 0x002C,
-
- /// <summary>
- /// Sent to the owner of a list box or combo box when the list box or combo box is destroyed or when items
- /// are removed by the LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT message.
- /// The system sends a <see cref="DeleteItem"/> message for each deleted item. The system sends the
- /// <see cref="DeleteItem"/> message for any deleted list box or combo box item with nonzero item data.
- /// </summary>
- DeleteItem = 0x002D,
-
- /// <summary>
- /// Sent by a list box with the LBS_WANTKEYBOARDINPUT style to its
- /// owner in response to a <see cref="KeyDown"/> message.
- /// </summary>
- VKeyToItem = 0x002E,
-
- /// <summary>
- /// Sent by a list box with the LBS_WANTKEYBOARDINPUT style to its
- /// owner in response to a <see cref="Char"/> message.
- /// </summary>
- CharToItem = 0x002F,
-
- /// <summary>
- /// Sent to specify the font that a control is to use when drawing text.
- /// </summary>
- SetFont = 0x0030,
-
- /// <summary>
- /// Sent to a control to retrieve the font with which the control is currently drawing its text.
- /// </summary>
- GetFont = 0x0031,
-
- /// <summary>
- /// Sent to a window to associate a hot key with the window.
- /// When the user presses the hot key, the system activates the window.
- /// </summary>
- SetHotkey = 0x0032,
-
- /// <summary>
- /// Sent to determine the hot key associated with a window.
- /// </summary>
- GetHotkey = 0x0033,
-
- /// <summary>
- /// Sent to a minimized (iconic) window. The window is about to be dragged by the user but does not have an
- /// icon defined for its class. An application can return a handle to an icon or cursor.
- /// The system displays this cursor or icon while the user drags the icon.
- /// </summary>
- QueryDragIcon = 0x0037,
-
- /// <summary>
- /// Sent to determine the relative position of a new item in the sorted list of an owner-drawn combo box or
- /// list box. Whenever the application adds a new item, the system sends this message to the owner of a
- /// combo box or list box created with the CBS_SORT or LBS_SORT style.
- /// </summary>
- CompareItem = 0x0039,
-
- /// <summary>
- /// Sent by Active Accessibility to obtain information about an accessible object contained in a server
- /// application. Applications never send this message directly. It is sent only by Active Accessibility
- /// in response to calls to AccessibleObjectFromPoint, AccessibleObjectFromEvent, or
- /// AccessibleObjectFromWindow. However, server applications handle this message.
- /// </summary>
- GetObject = 0x003D,
-
- /// <summary>
- /// Sent to all top-level windows when the system detects more than 12.5 percent of system time over a
- /// 30- to 60-second interval is being spent compacting memory. This indicates that system memory is low.
- /// </summary>
- Compacting = 0x0041,
-
- /// <summary>
- /// Marked as "no longer supported" and not officially documented. Use with care.
- /// </summary>
- CommNotify = 0x0044,
-
- /// <summary>
- /// Sent to a window whose size, position, or place in the Z order is about to change as a result of a
- /// call to the <see cref="User32.Window.SetWindowPos(IntPtr, SetWindowPosHwndEnum, int, int, int, int,
- /// SetWindowPosFlags)"/> function or another window-management function.
- /// </summary>
- WindowPosChanging = 0x0046,
-
- /// <summary>
- /// Sent to a window whose size, position, or place in the Z order has changed as a result of a call to the
- /// <see cref="User32.Window.SetWindowPos(IntPtr, SetWindowPosHwndEnum, int, int, int, int,
- /// SetWindowPosFlags)"/> function or another window-management function.
- /// </summary>
- WindowPosChanged = 0x0047,
-
- /// <summary>
- /// Notifies applications that the system, typically a battery-powered personal computer,
- /// is about to enter a suspended mode.<para/>
- /// Obsolete : use <see cref="PowerBroadcast"/> instead.
- /// </summary>
- Power = 0x0048,
-
- /// <summary>
- /// Sent to pass data to another application.
- /// </summary>
- CopyData = 0x004A,
-
- /// <summary>
- /// Posted to an application when a user cancels the application's journaling activities.
- /// The message is posted with a null/zero window handle.
- /// </summary>
- CancelJournal = 0x004B,
-
- /// <summary>
- /// Sent by a common control to its parent window when an event has occurred
- /// or the control requires some information.
- /// </summary>
- Notify = 0x004E,
-
- /// <summary>
- /// Posted to the window with the focus when the user chooses a new input language, either with the hotkey
- /// (specified in the Keyboard control panel application) or from the indicator on the system taskbar.
- /// An application can accept the change by passing the message to the
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function or reject the change (and prevent it from taking place) by returning immediately.
- /// </summary>
- InputLanguageChangeRequest = 0x0050,
-
- /// <summary>
- /// Sent to the topmost affected window after an application's input language has been changed. You should
- /// make any application-specific settings and pass the message to the
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function, which passes the message to all first-level child windows. These child windows can pass the
- /// message to
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// to have it pass the message to their child windows, and so on.
- /// </summary>
- InputLanguageChange = 0x0051,
-
- /// <summary>
- /// Sent to an application that has initiated a training card with Microsoft Windows Help. The message informs
- /// the application when the user clicks an authorable button. An application initiates a training card by
- /// specifying the HELP_TCARD command in a call to the WinHelp function.
- /// </summary>
- TCard = 0x0052,
-
- /// <summary>
- /// Indicates that the user pressed the F1 key. If a menu is active when F1 is pressed, <see cref="Help"/> is
- /// sent to the window associated with the menu; otherwise, <see cref="Help"/> is sent to the window that has
- /// the keyboard focus. If no window has the keyboard focus, <see cref="Help"/> is sent to the currently
- /// active window.
- /// </summary>
- Help = 0x0053,
-
- /// <summary>
- /// Sent to all windows after the user has logged on or off. When the user logs on or off, the system updates
- /// the user-specific settings. The system sends this message immediately after updating the settings.
- /// </summary>
- UserChanged = 0x0054,
-
- /// <summary>
- /// Determines if a window accepts ANSI or Unicode structures in the <see cref="Notify"/> notification message.
- /// <see cref="NotifyFormat"/> messages are sent from a common control to its parent window
- /// and from the parent window to the common control.
- /// </summary>
- NotifyFormat = 0x0055,
-
- /// <summary>
- /// Notifies a window that the user clicked the right mouse button (right-clicked) in the window.
- /// </summary>
- ContextMenu = 0x007B,
-
- /// <summary>
- /// Sent to a window when the <see cref="User32.Window.SetWindowLong(IntPtr, int, int)"/>
- /// function is about to change one or more of the window's styles.
- /// </summary>
- StyleChanging = 0x007C,
-
- /// <summary>
- /// Sent to a window after the <see cref="User32.Window.SetWindowLong(IntPtr, int, int)"/>
- /// function has changed one or more of the window's styles.
- /// </summary>
- StyleChanged = 0x007D,
-
- /// <summary>
- /// Sent to all windows when the display resolution has changed.
- /// </summary>
- DisplayChange = 0x007E,
-
- /// <summary>
- /// Sent to a window to retrieve a handle to the large or small icon associated with a window.
- /// The system displays the large icon in the ALT+TAB dialog, and the small icon in the window caption.
- /// </summary>
- GetIcon = 0x007F,
-
- /// <summary>
- /// Sent by an application to associate a new large or small icon with a window. The system displays the
- /// large icon in the ALT+TAB dialog box, and the small icon in the window caption.
- /// </summary>
- SetIcon = 0x0080,
-
- /// <summary>
- /// Sent prior to the <see cref="Create"/> message when a window is first created.
- /// </summary>
- NCCreate = 0x0081,
-
- /// <summary>
- /// Informs a window that its nonclient area is being destroyed. The
- /// <see cref="User32.Window.DestroyWindow(IntPtr)"/> function sends the <see cref="NCDestroy"/> message
- /// to the window following the <see cref="Destroy"/> message.
- /// <see cref="Destroy"/> is used to free the allocated memory object associated with the window.
- /// </summary>
- NCDestroy = 0x0082,
-
- /// <summary>
- /// Sent when the size and position of a window's client area must be calculated. By processing this message,
- /// an application can control the content of the window's client area when
- /// the size or position of the window changes.
- /// </summary>
- NCCalcSize = 0x0083,
-
- /// <summary>
- /// Sent to a window when the cursor moves, or when a mouse button is pressed or released. If the mouse is
- /// not captured, the message is sent to the window beneath the cursor.
- /// Otherwise, the message is sent to the window that has captured the mouse.
- /// </summary>
- NCHitTest = 0x0084,
-
- /// <summary>
- /// Sent to a window when its frame must be painted.
- /// </summary>
- NCPaint = 0x0085,
-
- /// <summary>
- /// Non Client Area Activated Caption (Title) of the Form.
- /// </summary>
- NCActivate = 0x0086,
-
- /// <summary>
- /// Sent to the window procedure associated with a control. By default, the system handles all keyboard input
- /// to the control; the system interprets certain types of keyboard input as dialog box navigation keys.
- /// To override this default behavior, the control can respond to the <see cref="GetDialogCode"/> message to
- /// indicate the types of input it wants to process itself.
- /// </summary>
- GetDialogCode = 0x0087,
-
- /// <summary>
- /// Used to synchronize painting while avoiding linking independent GUI threads.
- /// </summary>
- SyncPaint = 0x0088,
-
- /// <summary>
- /// Posted to a window when the cursor is moved within the nonclient area of the window. This message is posted
- /// to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCMouseMove = 0x00A0,
-
- /// <summary>
- /// Posted when the user presses the left mouse button while the cursor is within the nonclient area of a
- /// window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCLButtonDown = 0x00A1,
-
- /// <summary>
- /// Posted when the user releases the left mouse button while the cursor is within the nonclient area of a
- /// window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCLButtonUp = 0x00A2,
-
- /// <summary>
- /// Posted when the user double-clicks the middle mouse button while the cursor is within the nonclient area
- /// of a window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCLButtonDoubleClick = 0x00A3,
-
- /// <summary>
- /// Posted when the user presses the right mouse button while the cursor is within the nonclient area of a
- /// window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCRButtonDown = 0x00A4,
-
- /// <summary>
- /// Posted when the user releases the right mouse button while the cursor is within the nonclient area of a
- /// window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCRButtonUp = 0x00A5,
-
- /// <summary>
- /// Posted when the user double-clicks the right mouse button while the cursor is within the nonclient area
- /// of a window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCRButtonDoubleClick = 0x00A6,
-
- /// <summary>
- /// Posted when the user presses the middle mouse button while the cursor is within the nonclient area of a
- /// window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCMButtonDown = 0x00A7,
-
- /// <summary>
- /// Posted when the user releases the middle mouse button while the cursor is within the nonclient area of a
- /// window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCMButtonUp = 0x00A8,
-
- /// <summary>
- /// Posted when the user double-clicks the middle mouse button while the cursor is within the nonclient area
- /// of a window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCMButtonDoubleClick = 0x00A9,
-
- /// <summary>
- /// Posted when the user presses the first or second X button while the cursor is within the nonclient area
- /// of a window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCXButtonDown = 0x00AB,
-
- /// <summary>
- /// Posted when the user releases the first or second X button while the cursor is within the nonclient area
- /// of a window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCXButtonUp = 0x00AC,
-
- /// <summary>
- /// Posted when the user double-clicks the first or second X button while the cursor is within the nonclient
- /// area of a window. This message is posted to the window that contains the cursor.<para/>
- /// If a window has captured the mouse, this message is not posted.
- /// </summary>
- NCXButtonDoubleClick = 0x00AD,
-
- /// <summary>
- /// Sent to the window that registered to receive raw input.
- /// </summary>
- InputDeviceChange = 0x00FE,
-
- /// <summary>
- /// Sent to the window that is getting raw input.
- /// </summary>
- Input = 0x00FF,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when a nonsystem key is pressed.
- /// A nonsystem key is a key that is pressed when the ALT key is not pressed.
- /// </summary>
- KeyDown = 0x0100,
-
- /// <summary>
- /// This message filters for keyboard messages.
- /// </summary>
- KeyFirst = 0x0100,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key
- /// that is pressed when the ALT key is not pressed,
- /// or a keyboard key that is pressed when a window has the keyboard focus.
- /// </summary>
- KeyUp = 0x0101,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when a <see cref="KeyDown"/> message is translated by the
- /// TranslateMessage function. The <see cref="Char"/> message contains
- /// the character code of the key that was pressed.
- /// </summary>
- Char = 0x0102,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when a <see cref="KeyUp"/> message is translated by the
- /// TranslateMessage function. <see cref="DeadChar"/> specifies a character code generated by a dead key.
- /// A dead key is a key that generates a character, such as the umlaut (double-dot), that is combined with
- /// another character to form a composite character. For example, the umlaut-O character (Ö) is generated
- /// by typing the dead key for the umlaut character, and then typing the O key.
- /// </summary>
- DeadChar = 0x0103,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu
- /// bar) or holds down the ALT key and then presses another key. It also occurs when no window currently
- /// has the keyboard focus; in this case, the <see cref="SystemKeyDown"/> message is sent to the active window.
- /// The window that receives the message can distinguish between these two contexts by
- /// checking the context code in the lParam parameter.
- /// </summary>
- SystemKeyDown = 0x0104,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when the user releases a key that was pressed while the ALT
- /// key was held down. It also occurs when no window currently has the keyboard focus; in this case, the
- /// <see cref="SystemKeyUp"/> message is sent to the active window. The window that receives the message can
- /// distinguish between these two contexts by checking the context code in the lParam parameter.
- /// </summary>
- SystemKeyUp = 0x0105,
-
- /// <summary>
- /// Posted to the window with the keyboard focus when a <see cref="SystemKeyDown"/> message is translated by
- /// the TranslateMessage function. It specifies the character code of a system character key — that is, a
- /// character key that is pressed while the ALT key is down.
- /// </summary>
- SystemChar = 0x0106,
-
- /// <summary>
- /// Sent to the window with the keyboard focus when a <see cref="SystemKeyDown"/> message is translated by the
- /// TranslateMessage function. <see cref="SystemDeadChar"/> specifies the character code of a system dead key
- /// — that is, a dead key that is pressed while holding down the ALT key.
- /// </summary>
- SystemDeadChar = 0x0107,
-
- /// <summary>
- /// Can be used by an application to post input to other windows. This message contains the character code
- /// of the key that was pressed. (Test whether a target app can process <see cref="UnicodeCharacter"/> messages
- /// by sending the message with wParam set to UNICODE_NOCHAR.)
- /// </summary>
- UnicodeCharacter = 0x0109,
-
- /// <summary>
- /// This message filters for keyboard messages.
- /// </summary>
- KeyLast = 0x0109,
-
- /// <summary>
- /// Sent immediately before the IME generates the composition string as a result of a keystroke.
- /// </summary>
- ImeStartComposition = 0x010D,
-
- /// <summary>
- /// Sent to an application when the IME ends composition.
- /// </summary>
- ImeEndComposition = 0x010E,
-
- /// <summary>
- /// Sent to an application when the IME changes composition status as a result of a keystroke.
- /// </summary>
- ImeComposition = 0x010F,
-
- /// <summary>
- /// Same as <see cref="ImeComposition"/>. Documentation incomplete.
- /// </summary>
- ImeKeylast = 0x010F,
-
- /// <summary>
- /// Sent to the dialog box procedure immediately before a dialog box is displayed. Dialog box procedures
- /// typically use this message to initialize controls and carry out any other
- /// initialization tasks that affect the appearance of the dialog box.
- /// </summary>
- InitDialog = 0x0110,
-
- /// <summary>
- /// Sent when the user selects a command item from a menu, when a control sends a notification message
- /// to its parent window, or when an accelerator keystroke is translated.
- /// </summary>
- Command = 0x0111,
-
- /// <summary>
- /// A window receives this message when the user chooses a command from the Window menu (formerly known
- /// as the system or control menu) or when the user chooses the maximize button, minimize button,
- /// restore button, or close button.
- /// </summary>
- SystemCommand = 0x0112,
-
- /// <summary>
- /// Posted to the installing thread's message queue when a timer expires.
- /// The message is posted by the <see cref="User32.Message.GetMessage(out Msg, IntPtr, uint, uint)"/> or
- /// <see cref="User32.Message.PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function.
- /// </summary>
- Timer = 0x0113,
-
- /// <summary>
- /// Sent to a window when a scroll event occurs in the window's standard horizontal scroll bar.
- /// This message is also sent to the owner of a horizontal scroll bar control
- /// when a scroll event occurs in the control.
- /// </summary>
- HScroll = 0x0114,
-
- /// <summary>
- /// Sent to a window when a scroll event occurs in the window's standard vertical scroll bar. This message
- /// is also sent to the owner of a vertical scroll bar control when a scroll event occurs in the control.
- /// </summary>
- VScroll = 0x0115,
-
- /// <summary>
- /// Sent when a menu is about to become active. It occurs when the user clicks an item on the menu bar or
- /// presses a menu key. This allows the application to modify the menu before it is displayed.
- /// </summary>
- InitMenu = 0x0116,
-
- /// <summary>
- /// Sent when a drop-down menu or submenu is about to become active. This allows an application to modify
- /// the menu before it is displayed, without changing the entire menu.
- /// </summary>
- InitMenuPopup = 0x0117,
-
- /// <summary>
- /// Passes information about a gesture.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- Gesture = 0x0119,
-
- /// <summary>
- /// Gives you a chance to set the gesture configuration.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- GestureNotify = 0x011A,
-
- /// <summary>
- /// Sent to a menu's owner window when the user selects a menu item.
- /// </summary>
- MenuSelect = 0x011F,
-
- /// <summary>
- /// Sent when a menu is active and the user presses a key that does not correspond to any mnemonic
- /// or accelerator key. This message is sent to the window that owns the menu.
- /// </summary>
- MenuChar = 0x0120,
-
- /// <summary>
- /// Sent to the owner window of a modal dialog box or menu that is entering an idle state.
- /// A modal dialog box or menu enters an idle state when no messages are waiting in its queue
- /// after it has processed one or more previous messages.
- /// </summary>
- EnterIdle = 0x0121,
-
- /// <summary>
- /// Sent when the user releases the right mouse button while the cursor is on a menu item.
- /// </summary>
- MenuRButtonUp = 0x0122,
-
- /// <summary>
- /// Sent to the owner of a drag-and-drop menu when the user drags a menu item.
- /// </summary>
- MenuDrag = 0x0123,
-
- /// <summary>
- /// Sent to the owner of a drag-and-drop menu when the mouse cursor enters a menu item or moves
- /// from the center of the item to the top or bottom of the item.
- /// </summary>
- MenuGetObject = 0x0124,
-
- /// <summary>
- /// Sent when a drop-down menu or submenu has been destroyed.
- /// </summary>
- UninitMenuPopup = 0x0125,
-
- /// <summary>
- /// Sent when the user makes a selection from a menu.
- /// </summary>
- MenuCommand = 0x0126,
-
- /// <summary>
- /// Sent by an application to indicate that the UI state should be changed.
- /// </summary>
- ChangeUIState = 0x0127,
-
- /// <summary>
- /// Sent by an application to change the UI state for the specified window and all its child windows.
- /// </summary>
- UpdateUIState = 0x0128,
-
- /// <summary>
- /// Sent by an application to retrieve the UI state for a window.
- /// </summary>
- QueryUIState = 0x0129,
-
- /// <summary>
- /// Sent to the owner window of a message box before Windows draws the message box. By responding to this
- /// message, the owner window can set the text and background colors of the message box
- /// by using the given display device context handle.
- /// </summary>
- CtlColorMsgBox = 0x0132,
-
- /// <summary>
- /// An edit control that is not read-only or disabled sends the <see cref="CtlColorEdit"/> message to its
- /// parent window when the control is about to be drawn. By responding to this message, the parent window
- /// can use the specified device context handle to set the text and background colors of the edit control.
- /// </summary>
- CtlColorEdit = 0x0133,
-
- /// <summary>
- /// Sent to the parent window of a list box before the system draws the list box. By responding to this
- /// message, the parent window can set the text and background colors of the list box
- /// by using the specified display device context handle.
- /// </summary>
- CtlColorListBox = 0x0134,
-
- /// <summary>
- /// Sent to the parent window of a button before drawing the button. The parent window can change
- /// the button's text and background colors. However, only owner-drawn buttons
- /// respond to the parent window processing this message.
- /// </summary>
- CtlColorButton = 0x0135,
-
- /// <summary>
- /// Sent to a dialog box before the system draws the dialog box. By responding to this message,
- /// the dialog box can set its text and background colors using the specified display device context handle.
- /// </summary>
- CtlColorDialog = 0x0136,
-
- /// <summary>
- /// Sent to the parent window of a scroll bar control when the control is about to be drawn.
- /// By responding to this message, the parent window can use the display context handle
- /// to set the background color of the scroll bar control.
- /// </summary>
- CtlColorScrollbar = 0x0137,
-
- /// <summary>
- /// A static control, or an edit control that is read-only or disabled, sends the <see cref="CtlColorStatic"/>
- /// message to its parent window when the control is about to be drawn.
- /// By responding to this message, the parent window can use the specified device context handle
- /// to set the text and background colors of the static control.
- /// </summary>
- CtlColorStatic = 0x0138,
-
- /// <summary>
- /// Retrieves the menu handle for the current window.
- /// </summary>
- GetHMenu = 0x01E1,
-
- /// <summary>
- /// Posted to a window when the cursor moves. If the mouse is not captured, the message is posted to the window
- /// that contains the cursor. Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- MouseMove = 0x0200,
-
- /// <summary>
- /// Use to specify the first mouse message. Use the
- /// <see cref="User32.Message.PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function.
- /// </summary>
- MouseFirst = 0x0200,
-
- /// <summary>
- /// Posted when the user presses the left mouse button while the cursor is in the client area of a window.
- /// If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- LButtonDown = 0x0201,
-
- /// <summary>
- /// Posted when the user releases the left mouse button while the cursor is in the client area of a window.
- /// If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- LButtonUp = 0x0202,
-
- /// <summary>
- /// Posted when the user double-clicks the left mouse button while the cursor is in the client area of a
- /// window. If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- LButtonDoubleClick = 0x0203,
-
- /// <summary>
- /// Posted when the user presses the right mouse button while the cursor is in the client area of a window.
- /// If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- RButtonDown = 0x0204,
-
- /// <summary>
- /// Posted when the user releases the right mouse button while the cursor is in the client area of a window.
- /// If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- RButtonUp = 0x0205,
-
- /// <summary>
- /// Posted when the user double-clicks the right mouse button while the cursor is in the client area of a
- /// window. If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- RButtonDoubleClick = 0x0206,
-
- /// <summary>
- /// Posted when the user presses the middle mouse button while the cursor is in the client area of a window.
- /// If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- MButtonDown = 0x0207,
-
- /// <summary>
- /// Posted when the user releases the middle mouse button while the cursor is in the client area of a window.
- /// If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- MButtonUp = 0x0208,
-
- /// <summary>
- /// Posted when the user double-clicks the middle mouse button while the cursor is in the client area of a
- /// window. If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- MButtonDoubleClick = 0x0209,
-
- /// <summary>
- /// Sent to the focus window when the mouse wheel is rotated. The
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function propagates the message to the window's parent. There should be no internal forwarding of the
- /// message, since
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// propagates it up the parent chain until it finds a window that processes it.
- /// </summary>
- MouseWheel = 0x020A,
-
- /// <summary>
- /// Posted when the user presses the first or second X button while the cursor is in the client area of a
- /// window. If the mouse is not captured, the message is posted to the window beneath the cursor. Otherwise,
- /// the message is posted to the window that has captured the mouse.
- /// </summary>
- XButtonDown = 0x020B,
-
- /// <summary>
- /// Posted when the user releases the first or second X button while the cursor is in the client area of a
- /// window. If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- XButtonUp = 0x020C,
-
- /// <summary>
- /// Posted when the user double-clicks the first or second X button while the cursor is in the client area of
- /// a window. If the mouse is not captured, the message is posted to the window beneath the cursor.
- /// Otherwise, the message is posted to the window that has captured the mouse.
- /// </summary>
- XButtonDoubleClick = 0x020D,
-
- /// <summary>
- /// Sent to the focus window when the mouse's horizontal scroll wheel is tilted or rotated. The
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function propagates the message to the window's parent. There should be no internal forwarding of the
- /// message, since
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// propagates it up the parent chain until it finds a window that processes it.
- /// </summary>
- MouseHWheel = 0x020E,
-
- /// <summary>
- /// Same as <see cref="MouseHWheel"/>. Documentation incomplete.
- /// </summary>
- MouseLast = 0x020E,
-
- /// <summary>
- /// Sent to the parent of a child window when the child window is created or destroyed, or when the user
- /// clicks a mouse button while the cursor is over the child window. When the child window is being created,
- /// the system sends <see cref="ParentNotify"/> just before the CreateWindow or
- /// <see cref="User32.Window.CreateWindowEx(ExtendedWindowStyles, string, string,
- /// WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/>
- /// function that creates the window returns. When the child window is being destroyed, the system sends the
- /// message before any processing to destroy the window takes place.
- /// </summary>
- ParentNotify = 0x0210,
-
- /// <summary>
- /// Informs an application's main window procedure that a menu modal loop has been entered.
- /// </summary>
- EnterMenuLoop = 0x0211,
-
- /// <summary>
- /// Informs an application's main window procedure that a menu modal loop has been exited.
- /// </summary>
- ExitMenuLoop = 0x0212,
-
- /// <summary>
- /// Sent to an application when the right or left arrow key is used
- /// to switch between the menu bar and the system menu.
- /// </summary>
- NextMenu = 0x0213,
-
- /// <summary>
- /// Sent to a window that the user is resizing. By processing this message, an application can monitor
- /// the size and position of the drag rectangle and, if needed, change its size or position.
- /// </summary>
- Sizing = 0x0214,
-
- /// <summary>
- /// Sent to the window that is losing the mouse capture.
- /// </summary>
- CaptureChanged = 0x0215,
-
- /// <summary>
- /// Sent to a window that the user is moving. By processing this message, an application can monitor
- /// the position of the drag rectangle and, if needed, change its position.
- /// </summary>
- Moving = 0x0216,
-
- /// <summary>
- /// Notifies applications that a power-management event has occurred.
- /// </summary>
- PowerBroadcast = 0x0218,
-
- /// <summary>
- /// Notifies an application of a change to the hardware configuration of a device or the computer.
- /// </summary>
- DeviceChange = 0x0219,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to create an MDI child window.
- /// </summary>
- MdiCreate = 0x0220,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to close an MDI child window.
- /// </summary>
- MdiDestroy = 0x0221,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to instruct the client window
- /// to activate a different MDI child window.
- /// </summary>
- MdiActivate = 0x0222,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to restore an MDI child
- /// window from maximized or minimized size.
- /// </summary>
- MdiRestore = 0x0223,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to activate the
- /// next or previous child window.
- /// </summary>
- MdiNext = 0x0224,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to maximize an MDI
- /// child window. The system resizes the child window to make its client area fill the client window. The
- /// system places the child window's window menu icon in the rightmost position of the frame window's menu bar,
- /// and places the child window's restore icon in the leftmost position. The system also appends the title bar
- /// text of the child window to that of the frame window.
- /// </summary>
- MdiMaximize = 0x0225,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to arrange all of its MDI
- /// child windows in a tile format.
- /// </summary>
- MdiTile = 0x0226,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to arrange all its MDI
- /// child windows in a cascade format.
- /// </summary>
- MdiCascade = 0x0227,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to arrange all minimized MDI
- /// child windows. It does not affect child windows that are not minimized.
- /// </summary>
- MdiIconArrange = 0x0228,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to retrieve the handle
- /// to the active MDI child window.
- /// </summary>
- MdiGetActive = 0x0229,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to replace the entire menu
- /// of an MDI frame window, to replace the window menu of the frame window, or both.
- /// </summary>
- MdiSetMenu = 0x0230,
-
- /// <summary>
- /// Sent one time to a window after it enters the moving or sizing modal loop. The window enters the moving or
- /// sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes
- /// the <see cref="SystemCommand"/> message to the
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value.
- /// The operation is complete when
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// returns.
- /// </summary>
- EnterSizeMove = 0x0231,
-
- /// <summary>
- /// Sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the
- /// moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the
- /// window passes the <see cref="SystemCommand"/> message to the
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value.
- /// The operation is complete when
- /// <see cref="User32.Window.DefWindowProc(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// returns.
- /// </summary>
- ExitSizeMove = 0x0232,
-
- /// <summary>
- /// Sent when the user drops a file on the window of an application that
- /// has registered itself as a recipient of dropped files.
- /// </summary>
- DropFiles = 0x0233,
-
- /// <summary>
- /// Sent to a multiple-document interface (MDI) client window by an application to refresh
- /// the window menu of the MDI frame window.
- /// </summary>
- MdiRefreshMenu = 0x0234,
-
- /// <summary>
- /// Sent to a window when there is a change in the settings of a monitor that has a digitizer attached to it.
- /// This message contains information regarding the scaling of the display mode.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- PointerDeviceChange = 0x0238,
-
- /// <summary>
- /// Sent to a window when a pointer device is detected within range of an input digitizer.
- /// This message contains information regarding the device and its proximity.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- PointerDeviceInRange = 0x0239,
-
- /// <summary>
- /// Sent to a window when a pointer device has departed the range of an input digitizer.
- /// This message contains information regarding the device and its proximity.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- PointerDeviceOutOfRange = 0x023A,
-
- /// <summary>
- /// Notifies the window when one or more touch points, such as a finger or pen,
- /// touches a touch-sensitive digitizer surface.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- Touch = 0x0240,
-
- /// <summary>
- /// Posted to provide an update on a pointer that made contact over the non-client area of a window or when a
- /// hovering uncaptured contact moves over the non-client area of a window. While the pointer is hovering,
- /// the message targets whichever window the pointer happens to be over. While the pointer is in contact with
- /// the surface, the pointer is implicitly captured to the window over which the pointer made contact and that
- /// window continues to receive input for the pointer until it breaks contact.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- NCPointerUpdate = 0x0241,
-
- /// <summary>
- /// Posted when a pointer makes contact over the non-client area of a window. The message targets the window
- /// over which the pointer makes contact. The pointer is implicitly captured to the window so that the window
- /// continues to receive input for the pointer until it breaks contact.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- NCPointerDown = 0x0242,
-
- /// <summary>
- /// Posted when a pointer that made contact over the non-client area of a window breaks contact. The message
- /// targets the window over which the pointer makes contact and the pointer is, at that point, implicitly
- /// captured to the window so that the window continues to receive input for the pointer until it breaks
- /// contact, including the <see cref="NCPointerUp"/> notification.<para/>
- /// If a window has captured this pointer, this message is not posted. Instead, a <see cref="PointerUp"/>
- /// is posted to the window that has captured this pointer.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- NCPointerUp = 0x0243,
-
- /// <summary>
- /// Posted to provide an update on a pointer that made contact over the client area of a window or on a
- /// hovering uncaptured pointer over the client area of a window. While the pointer is hovering, the message
- /// targets whichever window the pointer happens to be over. While the pointer is in contact with the surface,
- /// the pointer is implicitly captured to the window over which the pointer made contact and that window
- /// continues to receive input for the pointer until it breaks contact.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerUpdate = 0x0245,
-
- /// <summary>
- /// Posted when a pointer makes contact over the client area of a window. This input message targets the
- /// window over which the pointer makes contact, and the pointer is implicitly captured to the window so
- /// that the window continues to receive input for the pointer until it breaks contact.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerDown = 0x0246,
-
- /// <summary>
- /// Posted when a pointer that made contact over the client area of a window breaks contact. This input
- /// message targets the window over which the pointer makes contact and the pointer is, at that point,
- /// implicitly captured to the window so that the window continues to receive input messages including
- /// the <see cref="PointerUp"/> notification for the pointer until it breaks contact.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerUp = 0x0247,
-
- /// <summary>
- /// Sent to a window when a new pointer enters detection range over the window (hover) or when an
- /// existing pointer moves within the boundaries of the window.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerEnter = 0x0249,
-
- /// <summary>
- /// Sent to a window when a pointer leaves detection range over the window (hover) or when a
- /// pointer moves outside the boundaries of the window.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerLeave = 0x024A,
-
- /// <summary>
- /// Sent to an inactive window when a primary pointer generates a <see cref="PointerDown"/> over the window.
- /// As long as the message remains unhandled, it travels up the parent window chain until it is reaches the
- /// top-level window. Applications can respond to this message to specify whether they wish to be activated.
- /// <para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerActivate = 0x024B,
-
- /// <summary>
- /// Sent to a window that is losing capture of an input pointer.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerCaptureChanged = 0x024C,
-
- /// <summary>
- /// Sent to a window on a touch down in order to determine the most probable touch target.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- TouchHitTesting = 0x024D,
-
- /// <summary>
- /// Posted to the window with foreground keyboard focus when a scroll wheel is rotated.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerWheel = 0x024E,
-
- /// <summary>
- /// Posted to the window with foreground keyboard focus when a horizontal scroll wheel is rotated.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerHWheel = 0x024F,
-
- /// <summary>
- /// This member is not officially documented. Use with care.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerHitTest = 0x0250,
-
- /// <summary>
- /// Sent when ongoing pointer input, for an existing pointer ID, transitions from one process to another
- /// across content configured for cross-process chaining (AddContentWithCrossProcessChaining).<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerRoutedTo = 0x0251,
-
- /// <summary>
- /// Sent when pointer input transitions from one process to another across content configured for
- /// cross-process chaining (AddContentWithCrossProcessChaining).<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerRoutedAway = 0x0252,
-
- /// <summary>
- /// Sent to all processes (configured for cross-process chaining through AddContentWithCrossProcessChaining
- /// and not currently handling pointer input) ever associated with a specific pointer ID,
- /// when a <see cref="PointerUp"/> message is received on the current process.<para/>
- /// Only supported on Windows 8 and higher.
- /// </summary>
- PointerRoutedReleased = 0x0253,
-
- /// <summary>
- /// Sent to an application when a window is activated.
- /// </summary>
- ImeSetContext = 0x0281,
-
- /// <summary>
- /// Sent to an application to notify it of changes to the IME window.
- /// </summary>
- ImeNotify = 0x0282,
-
- /// <summary>
- /// Sent by an application to direct the IME window to carry out the requested command. The application
- /// uses this message to control the IME window that it has created.
- /// </summary>
- ImeControl = 0x0283,
-
- /// <summary>
- /// Sent to an application when the IME window finds no space to extend the area for the composition window.
- /// </summary>
- ImeCompositionFull = 0x0284,
-
- /// <summary>
- /// Sent to an application when the operating system is about to change the current IME.
- /// </summary>
- ImeSelect = 0x0285,
-
- /// <summary>
- /// Sent to an application when the IME gets a character of the conversion result.
- /// </summary>
- ImeChar = 0x0286,
-
- /// <summary>
- /// Sent to an application to provide commands and request information.
- /// </summary>
- ImeRequest = 0x0288,
-
- /// <summary>
- /// Sent to an application by the IME to notify the application of a key press and to keep message order.
- /// </summary>
- ImeKeydown = 0x0290,
-
- /// <summary>
- /// Sent to an application by the IME to notify the application of a key release and to keep message order.
- /// </summary>
- ImeKeyup = 0x0291,
-
- /// <summary>
- /// Posted to a window when the cursor hovers over the nonclient area of the window for the period of time
- /// specified in a prior call to <see cref="User32.Mouse.TrackMouseEvent(ref TrackMouseEvent)"/>.
- /// </summary>
- NCMouseHover = 0x02A0,
-
- /// <summary>
- /// Posted to a window when the cursor hovers over the client area of the window for the period of time
- /// specified in a prior call to <see cref="User32.Mouse.TrackMouseEvent(ref TrackMouseEvent)"/>.
- /// </summary>
- MouseHover = 0x02A1,
-
- /// <summary>
- /// Posted to a window when the cursor leaves the nonclient area of the window specified
- /// in a prior call to <see cref="User32.Mouse.TrackMouseEvent(ref TrackMouseEvent)"/>.
- /// </summary>
- NCMouseLeave = 0x02A2,
-
- /// <summary>
- /// Posted to a window when the cursor leaves the client area of the window specified
- /// in a prior call to <see cref="User32.Mouse.TrackMouseEvent(ref TrackMouseEvent)"/>.
- /// </summary>
- MouseLeave = 0x02A3,
-
- /// <summary>
- /// Notifies applications of changes in session state.
- /// </summary>
- WtsSessionChange = 0x02B1,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- TabletFirst = 0x02C0,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- TabletLast = 0x02DF,
-
- /// <summary>
- /// Sent when the effective dots per inch (dpi) for a window has changed. The DPI is the scale factor for a
- /// window. There are multiple events that can cause the DPI to change.<para/>
- /// Only supported on Windows 7 and higher.
- /// </summary>
- DpiChanged = 0x02E0,
-
- /// <summary>
- /// For Per Monitor v2 top-level windows, this message is sent to all HWNDs in the child HWDN tree of the
- /// window that is undergoing a DPI change. This message occurs before the top-level window receives
- /// <see cref="DpiChanged"/>, and traverses the child tree from the bottom up.<para/>
- /// Only supported on Windows 10.
- /// </summary>
- DpiChangedBeforeParent = 0x02E2,
-
- /// <summary>
- /// For Per Monitor v2 top-level windows, this message is sent to all HWNDs in the child HWDN tree of the
- /// window that is undergoing a DPI change. This message occurs after the top-level window receives
- /// <see cref="DpiChanged"/>, and traverses the child tree from the top down.<para/>
- /// Only supported on Windows 10.
- /// </summary>
- DpiChangedAfterParent = 0x02E3,
-
- /// <summary>
- /// This message tells the operating system that the window will be sized to dimensions other than the default.
- /// <para/>
- /// Only supported on Windows 10.
- /// </summary>
- GetDpiScaledSize = 0x02E4,
-
- /// <summary>
- /// Sent to an edit control or combo box by an application to delete (cut) the current selection,
- /// if any, in the edit control and copy the deleted text to the clipboard in CF_TEXT format.
- /// </summary>
- Cut = 0x0300,
-
- /// <summary>
- /// Sent to an edit control or combo box by an application to copy the current selection
- /// to the clipboard in CF_TEXT format.
- /// </summary>
- Copy = 0x0301,
-
- /// <summary>
- /// Sent to an edit control or combo box by an application to copy the current content of the clipboard to the
- /// edit control at the current caret position.
- /// Data is inserted only if the clipboard contains data in CF_TEXT format.
- /// </summary>
- Paste = 0x0302,
-
- /// <summary>
- /// Sent to an edit control or combo box by an application to delete (clear) the current selection,
- /// if any, from the edit control.
- /// </summary>
- Clear = 0x0303,
-
- /// <summary>
- /// Sent to an edit control by an application to undo the last operation. When this message is sent to
- /// an edit control, the previously deleted text is restored or the previously added text is deleted.
- /// </summary>
- Undo = 0x0304,
-
- /// <summary>
- /// Sent to the clipboard owner if it has delayed rendering a specific clipboard format and if an application
- /// has requested data in that format. The clipboard owner must render data in the specified format
- /// and place it on the clipboard by calling the SetClipboardData function.
- /// </summary>
- RenderFormat = 0x0305,
-
- /// <summary>
- /// Sent to the clipboard owner before it is destroyed, if the clipboard owner has delayed rendering one or
- /// more clipboard formats. For the content of the clipboard to remain available to other applications,
- /// the clipboard owner must render data in all the formats it is capable of generating, and place the
- /// data on the clipboard by calling the SetClipboardData function.
- /// </summary>
- RenderAllFormats = 0x0306,
-
- /// <summary>
- /// Sent to the clipboard owner when a call to the EmptyClipboard function empties the clipboard.
- /// </summary>
- DestroyClipboard = 0x0307,
-
- /// <summary>
- /// Sent to the first window in the clipboard viewer chain when the content of the clipboard changes. This
- /// enables a clipboard viewer window to display the new content of the clipboard.
- /// </summary>
- DrawClipboard = 0x0308,
-
- /// <summary>
- /// Sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the
- /// CF_OWNERDISPLAY format and the clipboard viewer's client area needs repainting.
- /// </summary>
- PaintClipboard = 0x0309,
-
- /// <summary>
- /// Sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the
- /// CF_OWNERDISPLAY format and an event occurs in the clipboard viewer's vertical scroll bar.
- /// The owner should scroll the clipboard image and update the scroll bar values.
- /// </summary>
- VScrollClipboard = 0x030A,
-
- /// <summary>
- /// Sent to the clipboard owner by a clipboard viewer window when the clipboard contains data in the
- /// CF_OWNERDISPLAY format and the clipboard viewer's client area has changed size.
- /// </summary>
- SizeClipboard = 0x030B,
-
- /// <summary>
- /// Sent to the clipboard owner by a clipboard viewer window to request the name of a
- /// CF_OWNERDISPLAY clipboard format.
- /// </summary>
- AskClipboardFormatName = 0x030C,
-
- /// <summary>
- /// Sent to the first window in the clipboard viewer chain when a window is being removed from the chain.
- /// </summary>
- ChangeClipboardChain = 0x030D,
-
- /// <summary>
- /// Sent to the clipboard owner by a clipboard viewer window. This occurs when the clipboard contains data in
- /// the CF_OWNERDISPLAY format and an event occurs in the clipboard viewer's horizontal scroll bar. The owner
- /// should scroll the clipboard image and update the scroll bar values.
- /// </summary>
- HScrollClipboard = 0x030E,
-
- /// <summary>
- /// Informs a window that it is about to receive the keyboard focus, giving the window the opportunity
- /// to realize its logical palette when it receives the focus.
- /// </summary>
- QueryNewPalette = 0x030F,
-
- /// <summary>
- /// Informs applications that an application is going to realize its logical palette.
- /// </summary>
- PaletteIsChanging = 0x0310,
-
- /// <summary>
- /// Sent by the OS to all top-level and overlapped windows after the window with the keyboard focus realizes
- /// its logical palette. This message enables windows that do not have the keyboard focus to realize
- /// their logical palettes and update their client areas.
- /// </summary>
- PaletteChanged = 0x0311,
-
- /// <summary>
- /// Posted when the user presses a hot key registered by the RegisterHotKey function. The message is placed
- /// at the top of the message queue associated with the thread that registered the hot key.
- /// </summary>
- Hotkey = 0x0312,
-
- /// <summary>
- /// Sent to a window to request that it draw itself in the specified device context,
- /// most commonly in a printer device context.
- /// </summary>
- Print = 0x0317,
-
- /// <summary>
- /// Sent to a window to request that it draw its client area in the specified device context,
- /// most commonly in a printer device context.
- /// </summary>
- PrintClient = 0x0318,
-
- /// <summary>
- /// Notifies a window that the user generated an application command event, for example, by clicking an
- /// application command button using the mouse or typing an application command key on the keyboard.<para/>
- /// </summary>
- AppCommand = 0x0319,
-
- /// <summary>
- /// Broadcast to every window following a theme change event. Examples of theme change events are the
- /// activation of a theme, the deactivation of a theme, or a transition from one theme to another.
- /// </summary>
- ThemeChanged = 0x031A,
-
- /// <summary>
- /// Sent when the contents of the clipboard have changed.
- /// </summary>
- ClipboardUpdate = 0x031D,
-
- /// <summary>
- /// Informs all top-level windows that Desktop Window Manager (DWM) composition has been enabled or disabled.
- /// <para/>
- /// Only supported on Windows Vista or higher.
- /// </summary>
- DwmCompositionChanged = 0x031E,
-
- /// <summary>
- /// Sent when the non-client area rendering policy has changed.<para/>
- /// Only supported on Windows Vista or higher.
- /// </summary>
- DwmNCRenderingChanged = 0x031F,
-
- /// <summary>
- /// Informs all top-level windows that the colorization color has changed.<para/>
- /// Only supported on Windows Vista or higher.
- /// </summary>
- DwmColorizationColorChanged = 0x0320,
-
- /// <summary>
- /// Sent when a Desktop Window Manager (DWM) composed window is maximized.<para/>
- /// Only supported on Windows Vista or higher.
- /// </summary>
- DwmWindowMaximizedChange = 0x0321,
-
- /// <summary>
- /// Instructs a window to provide a static bitmap to use as a thumbnail representation of that window.<para/>
- /// Only supported on Windows 7 or higher.
- /// </summary>
- DwmSendIconicThumbnail = 0x0323,
-
- /// <summary>
- /// Instructs a window to provide a static bitmap to use as a
- /// live preview (also known as a Peek preview) of that window.<para/>
- /// Only supported on Windows 7 or higher.
- /// </summary>
- DwmSendIconicLivePreviewBitmap = 0x0326,
-
- /// <summary>
- /// Sent to request extended title bar information.<para/>
- /// Only supported on Windows Vista or higher.
- /// </summary>
- GetTitleBarInfoEx = 0x033F,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- HandheldFirst = 0x0358,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- HandheldLast = 0x035F,
-
- /// <summary>
- /// Specifies the first afx message.
- /// </summary>
- AfxFirst = 0x0360,
-
- /// <summary>
- /// Specifies the last afx message.
- /// </summary>
- AfxLast = 0x037F,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- PenWinFirst = 0x0380,
-
- /// <summary>
- /// This member is not officially documented. Use with care.
- /// </summary>
- PenWinLast = 0x038F,
-
- /// <summary>
- /// Used by applications to help define private messages,
- /// usually of the form <see cref="App"/> + X, where X is an integer value.
- /// </summary>
- App = 0x8000,
-
- /// <summary>
- /// Used by applications to help define private messages for use by private window classes,
- /// usually of the form <see cref="User"/> + X, where X is an integer value.
- /// </summary>
- User = 0x0400,
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// The type of resizing requested by a <see cref="WindowMessage.Size"/>.
- /// </summary>
- public enum WindowMessageSizeType
- {
- /// <summary>
- /// The window has been resized, but neither the <see cref="Minimized"/>
- /// nor <see cref="Maximized"/> value applies.
- /// </summary>
- Restored = 0,
-
- /// <summary>
- /// The window has been minimized.
- /// </summary>
- Minimized = 1,
-
- /// <summary>
- /// The window has been maximized.
- /// </summary>
- Maximized = 2,
-
- /// <summary>
- /// Message is sent to all pop-up windows when some other window has been restored to its former size.
- /// </summary>
- MaxShow = 3,
-
- /// <summary>
- /// Message is sent to all pop-up windows when some other window is maximized.
- /// </summary>
- MaxHide = 4,
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Every window has one or more window styles. A window style is a named constant that defines an aspect of the
- /// window's appearance and behavior that is not specified by the window's class. An application usually sets
- /// window styles when creating windows. It can also set the styles after creating a window by using the
- /// <see cref="User32.Window.SetWindowLong(IntPtr, int, int)"/> function.
- /// </summary>
- [Flags]
- public enum WindowStyles : uint
- {
- /// <summary>
- /// The window is an overlapped window. An overlapped window has a title bar and a border.
- /// Same as the <see cref="Tiled"/> style.
- /// </summary>
- Overlapped = 0x00000000,
-
- /// <summary>
- /// The window is an overlapped window. An overlapped window has a title bar and a border.
- /// Same as the <see cref="Overlapped"/> style.
- /// </summary>
- Tiled = Overlapped,
-
- /// <summary>
- /// The window is a control that can receive the keyboard focus when the user presses the TAB key. Pressing
- /// the TAB key changes the keyboard focus to the next control with the <see cref="TabStop"/> style.<para/>
- /// You can turn this style on and off to change dialog box navigation. To change this style after a window
- /// has been created, use the <see cref="User32.Window.SetWindowLong(IntPtr, GetWindowLongIndex, IntPtr)"/>
- /// function. For user-created windows and modeless dialogs to work with tab stops,
- /// alter the message loop to call the IsDialogMessage function.
- /// </summary>
- TabStop = 0x00010000,
-
- /// <summary>
- /// The window has a maximize button. Cannot be combined with the
- /// <see cref="ExtendedWindowStyles.ContextHelp"/> style. The <see cref="SystemMenu"/>
- /// style must also be specified.
- /// </summary>
- MaximizeBox = 0x00010000,
-
- /// <summary>
- /// The window is the first control of a group of controls. The group consists of this first control and all
- /// controls defined after it, up to the next control with the <see cref="Group"/> style. The first control
- /// in each group usually has the <see cref="TabStop"/> style so that the user can move from group to group.
- /// The user can subsequently change the keyboard focus from one control in the group to
- /// the next control in the group by using the direction keys.<para/>
- /// You can turn this style on and off to change dialog box navigation. To change this style after a window
- /// has been created, use the <see cref="User32.Window.SetWindowLong(IntPtr, GetWindowLongIndex, IntPtr)"/>
- /// function.
- /// </summary>
- Group = 0x00020000,
-
- /// <summary>
- /// The window has a minimize button. Cannot be combined with the
- /// <see cref="ExtendedWindowStyles.ContextHelp"/> style.
- /// The <see cref="SystemMenu"/> style must also be specified.
- /// </summary>
- MinimizeBox = 0x00020000,
-
- /// <summary>
- /// The window has a sizing border. Same as the <see cref="SizeBox"/> style.
- /// </summary>
- ThickFrame = 0x00040000,
-
- /// <summary>
- /// The window has a sizing border. Same as the <see cref="ThickFrame"/> style.
- /// </summary>
- SizeBox = ThickFrame,
-
- /// <summary>
- /// The window has a window menu on its title bar. The <see cref="Caption"/> style must also be specified.
- /// </summary>
- SystemMenu = 0x00080000,
-
- /// <summary>
- /// The window has a horizontal scroll bar.
- /// </summary>
- HScroll = 0x00100000,
-
- /// <summary>
- /// The window has a vertical scroll bar.
- /// </summary>
- VScroll = 0x00200000,
-
- /// <summary>
- /// The window has a border of a style typically used with dialog boxes.
- /// A window with this style cannot have a title bar.
- /// </summary>
- DialogFrame = 0x00400000,
-
- /// <summary>
- /// The window has a thin-line border.
- /// </summary>
- Border = 0x00800000,
-
- /// <summary>
- /// The window has a title bar (includes the <see cref="Border"/> style).
- /// </summary>
- Caption = Border | DialogFrame,
-
- /// <summary>
- /// The window is initially maximized.
- /// </summary>
- Maximize = 0x01000000,
-
- /// <summary>
- /// Excludes the area occupied by child windows when drawing occurs within the parent window.
- /// This style is used when creating the parent window.
- /// </summary>
- ClipChildren = 0x02000000,
-
- /// <summary>
- /// Clips child windows relative to each other; that is, when a particular child window receives a
- /// <see cref="WindowMessage.Paint"/> message, the <see cref="ClipSiblings"/> style clips all other overlapping
- /// child windows out of the region of the child window to be updated. If <see cref="ClipSiblings"/> is not
- /// specified and child windows overlap, it is possible, when drawing within the client area of a child window,
- /// to draw within the client area of a neighboring child window.
- /// </summary>
- ClipSiblings = 0x04000000,
-
- /// <summary>
- /// The window is initially disabled. A disabled window cannot receive input from the user. To change this
- /// after a window has been created, use the EnableWindow function.
- /// </summary>
- Disabled = 0x08000000,
-
- /// <summary>
- /// The window is initially visible.<para/>
- /// This style can be turned on and off by using the
- /// <see cref="User32.Window.ShowWindow(IntPtr, ShowWindowCommand)"/> or <see cref="User32.Window.SetWindowPos(
- /// IntPtr, SetWindowPosHwndEnum, int, int, int, int, SetWindowPosFlags)"/> function.
- /// </summary>
- Visible = 0x10000000,
-
- /// <summary>
- /// The window is initially minimized. Same as the <see cref="Iconic"/> style.
- /// </summary>
- Minimize = 0x20000000,
-
- /// <summary>
- /// The window is initially minimized. Same as the <see cref="Minimize"/> style.
- /// </summary>
- Iconic = Minimize,
-
- /// <summary>
- /// The window is a child window. A window with this style cannot have a menu bar.
- /// This style cannot be used with the <see cref="Popup"/> style.
- /// </summary>
- Child = 0x40000000,
-
- /// <summary>
- /// Same as the <see cref="Child"/> style.
- /// </summary>
- ChildWindow = Child,
-
- /// <summary>
- /// The windows is a pop-up window. This style cannot be used with the <see cref="Child"/> style.
- /// </summary>
- Popup = 0x80000000,
-
- /// <summary>
- /// The window is an overlapped window. Same as the <see cref="TiledWindow"/> style.
- /// </summary>
- OverlappedWindow = Overlapped | Caption | SystemMenu | ThickFrame | MinimizeBox | MaximizeBox,
-
- /// <summary>
- /// The window is an overlapped window. Same as the <see cref="OverlappedWindow"/> style.
- /// </summary>
- TiledWindow = OverlappedWindow,
-
- /// <summary>
- /// The window is a pop-up window. The <see cref="Caption"/> and
- /// <see cref="PopupWindow"/> styles must be combined to make the window menu visible.
- /// </summary>
- PopupWindow = Popup | Border | SystemMenu,
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with icons.
- /// </summary>
- public static class Icon
- {
- /// <summary>
- /// Creates an icon or cursor from an <see cref="IconInfo"/> structure.
- /// </summary>
- /// <param name="iconInfo">
- /// An <see cref="IconInfo"/> structure the function uses to create the icon or cursor.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the icon or cursor that is created.<para/>
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern IntPtr CreateIconIndirect([In] ref IconInfo iconInfo);
-
- /// <summary>
- /// Destroys an icon and frees any memory the icon occupied.
- /// </summary>
- /// <param name="icon">A handle to the icon to be destroyed. The icon must not be in use.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DestroyIcon([In] IntPtr icon);
-
- /// <summary>
- /// Retrieves information about the specified icon or cursor.
- /// </summary>
- /// <param name="icon">A handle to the icon or cursor.</param>
- /// <param name="iconInfo">
- /// A pointer to an <see cref="IconInfo"/> structure. The function fills in the structure's members.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true and the function
- /// fills in the members of the specified <see cref="IconInfo"/> structure.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetIconInfo([In] IntPtr icon, [Out] out IconInfo iconInfo);
-
- /// <summary>
- /// Retrieves information about the specified pre-defined cursor.
- /// </summary>
- /// <param name="cursorName">One of the pre-defined cursors.</param>
- /// <param name="iconInfo">
- /// A pointer to an <see cref="IconInfo"/> structure. The function fills in the structure's members.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true and the function
- /// fills in the members of the specified <see cref="IconInfo"/> structure.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static bool GetIconInfo(CursorName cursorName, out IconInfo iconInfo)
- {
- return GetIconInfo(new IntPtr((int)cursorName), out iconInfo);
- }
-
- /// <summary>
- /// Retrieves information about the specified pre-defined icon.
- /// </summary>
- /// <param name="iconName">One of the pre-defined cursors.</param>
- /// <param name="iconInfo">
- /// A pointer to an <see cref="IconInfo"/> structure. The function fills in the structure's members.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true and the function
- /// fills in the members of the specified <see cref="IconInfo"/> structure.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static bool GetIconInfo(IconName iconName, out IconInfo iconInfo)
- {
- return GetIconInfo(new IntPtr((int)iconName), out iconInfo);
- }
-
- /// <summary>
- /// Loads the specified icon resource from the executable (.exe)
- /// file associated with an application instance.
- /// </summary>
- /// <param name="moduleInstance">
- /// A handle to an instance of the module whose executable file contains the icon to be loaded.
- /// This parameter must be <see cref="IntPtr.Zero"/> when a standard icon is being loaded.
- /// </param>
- /// <param name="iconName">The name of the icon resource to be loaded.</param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the newly loaded icon.<para/>
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern IntPtr LoadIcon([In] [Optional] IntPtr moduleInstance, [In] string iconName);
-
- /// <summary>
- /// Loads the specified icon resource from the executable (.exe)
- /// file associated with an application instance.
- /// </summary>
- /// <param name="moduleInstance">
- /// A handle to an instance of the module whose executable file contains the icon to be loaded.
- /// This parameter must be <see cref="IntPtr.Zero"/> when a standard icon is being loaded.
- /// </param>
- /// <param name="iconName">A pointer to a string with the name of the icon resource to be loaded.</param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the newly loaded icon.<para/>
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern IntPtr LoadIcon([In] [Optional] IntPtr moduleInstance, [In] IntPtr iconName);
-
- /// <summary>
- /// Loads the specified icon resource from the executable (.exe)
- /// file associated with an application instance.
- /// </summary>
- /// <param name="cursorName">One of the pre-defined cursors to be loaded.</param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the newly loaded icon.<para/>
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static IntPtr LoadIcon(CursorName cursorName)
- {
- return LoadIcon(IntPtr.Zero, new IntPtr((int)cursorName));
- }
-
- /// <summary>
- /// Loads the specified icon resource from the executable (.exe)
- /// file associated with an application instance.
- /// </summary>
- /// <param name="iconName">One of the pre-defined icons to be loaded.</param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the newly loaded icon.<para/>
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static IntPtr LoadIcon(IconName iconName)
- {
- return LoadIcon(IntPtr.Zero, new IntPtr((int)iconName));
- }
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with the keyboard.
- /// </summary>
- public static class Keyboard
- {
- /// <summary>
- /// Retrieves the status of the specified virtual key. The status specifies whether the key is up, down,
- /// or toggled (on, off—alternating each time the key is pressed).
- /// </summary>
- /// <param name="key">The desired virtual key.</param>
- /// <returns>
- /// The return value specifies the status of the specified virtual key, as follows:<para/>
- /// If the high-order bit is 1, the key is down; otherwise, it is up.<para/>
- /// If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is
- /// turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light
- /// (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern short GetKeyState([In] VirtualKey key);
-
- /// <summary>
- /// Determines whether a key is up or down at the time the function is called,
- /// and whether the key was pressed after a previous call to GetAsyncKeyState.
- /// </summary>
- /// <param name="key">The desired virtual key.</param>
- /// <returns>
- /// If the function succeeds, the return value specifies whether the key was pressed since the last call
- /// to <see cref="GetAsyncKeyState(VirtualKey)"/>, and whether the key is currently up or down. If the
- /// most significant bit is set, the key is down, and if the least significant bit is set, the key was
- /// pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last
- /// behavior; for more information, see the Remarks section in the official documentation.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern short GetAsyncKeyState([In] VirtualKey key);
-
- /// <summary>
- /// Retrieves the handle to the window that has the keyboard focus,
- /// if the window is attached to the calling thread's message queue.
- /// </summary>
- /// <returns>
- /// The return value is the handle to the window with the keyboard focus. If the calling thread's message
- /// queue does not have an associated window with the keyboard focus,
- /// the return value is <see cref="IntPtr.Zero"/>.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr GetFocus();
-
- /// <summary>
- /// Sets the keyboard focus to the specified window.
- /// The window must be attached to the calling thread's message queue.
- /// </summary>
- /// <param name="window">A handle to the window that will receive the keyboard input.
- /// If this parameter is <see cref="IntPtr.Zero"/>, keystrokes are ignored.</param>
- /// <returns>
- /// If the function succeeds, the return value is the handle to the window that previously had the
- /// keyboard focus. If the <paramref name="window"/> parameter is invalid or the window is not attached
- /// to the calling thread's message queue, the return value is <see cref="IntPtr.Zero"/>.<para/>
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern IntPtr SetFocus([In] [Optional] IntPtr window);
-
- /// <summary>
- /// Translates (maps) a virtual-key code into a scan code or character value,
- /// or translates a scan code into a virtual-key code.
- /// </summary>
- /// <param name="vkey">
- /// The virtual key code or scan code for a key.
- /// How this value is interpreted depends on the value of the <paramref name="mapType"/> parameter.
- /// </param>
- /// <param name="mapType">The translation to be performed.</param>
- /// <returns>
- /// The return value is either a scan code, a virtual-key code, or a character value, depending on
- /// the value of <paramref name="vkey"/> and <paramref name="mapType"/>.<para/>
- /// If there is no translation, the return value is zero.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern uint MapVirtualKey([In] VirtualKey vkey, [In] MapVirtualKeyType mapType);
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with messages.
- /// </summary>
- public static class Message
- {
- /// <summary>
- /// A special constant value that can be used to send a message to all top-level windows, including
- /// disabled or invisible unowned windows, overlapped windows, and pop-up windows;
- /// but not to child windows.
- /// </summary>
- public static readonly IntPtr BroadcastHandle = new IntPtr(0xFFFF);
-
- /// <summary>
- /// Dispatches incoming sent messages, checks the thread message queue for a posted message,
- /// and retrieves the message (if any exist).
- /// </summary>
- /// <param name="msg">A <see cref="Msg"/> structure that receives message information.</param>
- /// <param name="window">
- /// A handle to the window whose messages are to be retrieved.
- /// The window must belong to the current thread.<para/>
- /// If <paramref name="window"/> is <see cref="IntPtr.Zero"/>,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> retrieves messages for any
- /// window that belongs to the current thread, and any messages on the current thread's message queue whose
- /// <paramref name="window"/> value is <see cref="IntPtr.Zero"/> (see the <see cref="Msg"/> structure).
- /// Therefore if <paramref name="window"/> is <see cref="IntPtr.Zero"/>, both window messages
- /// and thread messages are processed.<para/>
- /// If <paramref name="window"/> is -1,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> retrieves only messages on the
- /// current thread's message queue whose <paramref name="window"/> value is <see cref="IntPtr.Zero"/>,
- /// that is, thread messages as posted by <see cref="PostMessage(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// (when the window parameter is <see cref="IntPtr.Zero"/>) or PostThreadMessage.
- /// </param>
- /// <param name="messageFilterMin">
- /// The value of the first message in the range of messages to be examined.
- /// Use <see cref="WindowMessage.KeyFirst"/> to specify the first keyboard message or
- /// <see cref="WindowMessage.MouseFirst"/> to specify the first mouse message.<para/>
- /// If <paramref name="messageFilterMin"/> and <paramref name="messageFilterMax"/> are both zero,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> returns all available messages
- /// (that is, no range filtering is performed).
- /// </param>
- /// <param name="messageFilterMax">
- /// The value of the last message in the range of messages to be examined. Use
- /// <see cref="WindowMessage.KeyLast"/> to specify the last keyboard message or
- /// <see cref="WindowMessage.MouseLast"/> to specify the last mouse message.<para/>
- /// If <paramref name="messageFilterMin"/> and <paramref name="messageFilterMax"/> are both zero,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> returns all available messages
- /// (that is, no range filtering is performed).
- /// </param>
- /// <param name="messageActions">Specifies how messages are to be handled.</param>
- /// <returns>
- /// If a message is available, the return value is true.<para/>
- /// If no messages are available, the return value is false.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool PeekMessage
- (
- [Out] out Msg msg,
- [In] [Optional] IntPtr window,
- [In] uint messageFilterMin,
- [In] uint messageFilterMax,
- [In] PeekMessageActions messageActions
- );
-
- /// <summary>
- /// Retrieves a message from the calling thread's message queue. The function dispatches
- /// incoming sent messages until a posted message is available for retrieval.<para/>
- /// Unlike <see cref="GetMessage(out Msg, IntPtr, uint, uint)"/>, the
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function does not wait
- /// for a message to be posted before returning.
- /// </summary>
- /// <param name="msg">
- /// An <see cref="Msg"/> structure that receives message information from the thread's message queue.
- /// </param>
- /// <param name="window">
- /// A handle to the window whose messages are to be retrieved.
- /// The window must belong to the current thread.<para/>
- /// If <paramref name="window"/> is <see cref="IntPtr.Zero"/>,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> retrieves messages for any
- /// window that belongs to the current thread, and any messages on the current thread's message queue whose
- /// <paramref name="window"/> value is <see cref="IntPtr.Zero"/> (see the <see cref="Msg"/> structure).
- /// Therefore if <paramref name="window"/> is <see cref="IntPtr.Zero"/>, both window messages
- /// and thread messages are processed.<para/>
- /// If <paramref name="window"/> is -1,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> retrieves only messages on the
- /// current thread's message queue whose <paramref name="window"/> value is <see cref="IntPtr.Zero"/>,
- /// that is, thread messages as posted by <see cref="PostMessage(IntPtr, WindowMessage, IntPtr, IntPtr)"/>
- /// (when the window parameter is <see cref="IntPtr.Zero"/>) or PostThreadMessage.
- /// </param>
- /// <param name="messageFilterMin">
- /// The value of the first message in the range of messages to be examined.
- /// Use <see cref="WindowMessage.KeyFirst"/> to specify the first keyboard message or
- /// <see cref="WindowMessage.MouseFirst"/> to specify the first mouse message.<para/>
- /// Use <see cref="WindowMessage.Input"/> here and in <paramref name="messageFilterMax"/> to specify only
- /// the <see cref="WindowMessage.Input"/> messages.<para/>
- /// If <paramref name="messageFilterMin"/> and <paramref name="messageFilterMax"/> are both zero,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> returns all available messages
- /// (that is, no range filtering is performed).
- /// </param>
- /// <param name="messageFilterMax">
- /// The value of the last message in the range of messages to be examined. Use
- /// <see cref="WindowMessage.KeyLast"/> to specify the last keyboard message or
- /// <see cref="WindowMessage.MouseLast"/> to specify the last mouse message.<para/>
- /// Use <see cref="WindowMessage.Input"/> here and in <paramref name="messageFilterMin"/> to specify only
- /// the <see cref="WindowMessage.Input"/> messages.<para/>
- /// If <paramref name="messageFilterMin"/> and <paramref name="messageFilterMax"/> are both zero,
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> returns all available messages
- /// (that is, no range filtering is performed).
- /// </param>
- /// <returns>
- /// If the function retrieves a message other than <see cref="WindowMessage.Quit"/>,
- /// the return value is true.<para/>
- /// If the function retrieves the <see cref="WindowMessage.Quit"/> message, the return value is false.
- /// <para/>
- /// If there is an error, the return value is -1. For example, the function fails if
- /// <paramref name="window"/> is an invalid window handle or <paramref name="msg"/> is an invalid pointer.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern int GetMessage
- (
- [Out] out Msg msg,
- [In] [Optional] IntPtr window,
- [In] uint messageFilterMin,
- [In] uint messageFilterMax
- );
-
- /// <summary>
- /// Retrieves the message time for the last message retrieved by the
- /// <see cref="GetMessage(out Msg, IntPtr, uint, uint)"/> function. The time is a long integer that
- /// specifies the elapsed time, in milliseconds, from the time the system was started to the time the
- /// message was created (that is, placed in the thread's message queue).
- /// </summary>
- /// <returns>The return value specifies the message time.</returns>
- [DllImport(Library)]
- public static extern int GetMessageTime();
-
- /// <summary>
- /// Sends the specified message to a window or windows. The
- /// <see cref="SendMessage(IntPtr, WindowMessage, IntPtr, IntPtr)"/> function calls the window procedure for the
- /// specified window and does not return until the window procedure has processed the message.
- /// </summary>
- /// <param name="window">
- /// A handle to the window whose window procedure will receive the message.<para/>
- /// Message sending is subject to UIPI. The thread of a process can send messages only to message queues
- /// of threads in processes of lesser or equal integrity level.
- /// </param>
- /// <param name="msg">The message to be sent.</param>
- /// <param name="wparam">Additional message-specific information.</param>
- /// <param name="lparam">Additional message-specific information.</param>
- /// <returns>
- /// The return value specifies the result of the message processing; it depends on the message sent.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern IntPtr SendMessage
- (
- [In] IntPtr window,
- [In] WindowMessage msg,
- [In] IntPtr wparam,
- [In] IntPtr lparam
- );
-
- /// <summary>
- /// Sends a message to all top-level windows in the system, including disabled or invisible unowned
- /// windows, overlapped windows, and pop-up windows; but not to child windows.
- /// </summary>
- /// <param name="msg">The message to be sent.</param>
- /// <param name="wparam">Additional message-specific information.</param>
- /// <param name="lparam">Additional message-specific information.</param>
- /// <returns>
- /// The return value specifies the result of the message processing; it depends on the message sent.
- /// </returns>
- /// <remarks>
- /// This method uses the constant <see cref="BroadcastHandle"/> for this special behavior.
- /// </remarks>
- public static IntPtr SendMessageAsBroadcast(WindowMessage msg, IntPtr wparam, IntPtr lparam)
- {
- return SendMessage(BroadcastHandle, msg, wparam, lparam);
- }
-
- /// <summary>
- /// Places (posts) a message in the message queue associated with the thread that created the specified
- /// window and returns without waiting for the thread to process the message.
- /// </summary>
- /// <param name="window">
- /// A handle to the window whose window procedure is to receive the message.<para/>
- /// Starting with Windows Vista, message posting is subject to UIPI. The thread of a process can post
- /// messages only to message queues of threads in processes of lesser or equal integrity level.<para/>
- /// If <paramref name="window"/> is <see cref="IntPtr.Zero"/>, this function will behave like a call to
- /// PostThreadMessage with the dwThreadId parameter set to the identifier of the current thread.
- /// </param>
- /// <param name="msg">The message to be posted.</param>
- /// <param name="wparam">Additional message-specific information.</param>
- /// <param name="lparam">Additional message-specific information.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool PostMessage
- (
- [In] [Optional] IntPtr window,
- [In] WindowMessage msg,
- [In] IntPtr wparam,
- [In] IntPtr lparam
- );
-
- /// <summary>
- /// Places (posts) a message to all top-level windows in the system, including disabled or invisible
- /// unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.
- /// </summary>
- /// <param name="msg">The message to be posted.</param>
- /// <param name="wparam">Additional message-specific information.</param>
- /// <param name="lparam">Additional message-specific information.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- /// <remarks>
- /// This method uses the constant <see cref="BroadcastHandle"/> for this special behavior.
- /// </remarks>
- public static bool PostMessageAsBroadcast(WindowMessage msg, IntPtr wparam, IntPtr lparam)
- {
- return PostMessage(BroadcastHandle, msg, wparam, lparam);
- }
-
- /// <summary>
- /// Indicates to the system that a thread has made a request to terminate (quit).
- /// It is typically used in response to a <see cref="WindowMessage.Destroy"/> message.
- /// </summary>
- /// <param name="exitCode">
- /// The application exit code. This value is used as the
- /// wParam parameter of the <see cref="WindowMessage.Quit"/> message.
- /// </param>
- [DllImport(Library)]
- public static extern void PostQuitMessage([In] int exitCode);
-
- /// <summary>
- /// Dispatches a message to a window procedure. It is typically used to
- /// dispatch a message retrieved by the <see cref="GetMessage(out Msg, IntPtr, uint, uint)"/> function.
- /// </summary>
- /// <param name="msg">A structure that contains the message.</param>
- /// <returns>
- /// The return value specifies the value returned by the window procedure.
- /// Although its meaning depends on the message being dispatched, the return value generally is ignored.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library)]
- public static extern IntPtr DispatchMessage([In] ref Msg msg);
-
- /// <summary>
- /// Translates virtual-key messages into character messages. The character messages are posted to the
- /// calling thread's message queue, to be read the next time the thread calls the
- /// <see cref="GetMessage(out Msg, IntPtr, uint, uint)"/> or
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function.
- /// </summary>
- /// <param name="msg">
- /// An <see cref="Msg"/> structure that contains message information retrieved from the
- /// calling thread's message queue by using the <see cref="GetMessage(out Msg, IntPtr, uint, uint)"/> or
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function.
- /// </param>
- /// <returns>
- /// If the message is translated (that is, a character message is posted to the thread's message queue),
- /// the return value is true.<para/>
- /// If the message is <see cref="WindowMessage.KeyDown"/>, <see cref="WindowMessage.KeyUp"/>,
- /// <see cref="WindowMessage.SystemKeyDown"/>, or <see cref="WindowMessage.SystemKeyUp"/>,
- /// the return value is true, regardless of the translation.<para/>
- /// If the message is not translated (that is, a character message is not posted to the
- /// thread's message queue), the return value is false.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool TranslateMessage([In] ref Msg msg);
-
- /// <summary>
- /// Retrieves the type of messages found in the calling thread's message queue.
- /// </summary>
- /// <param name="flags">The types of messages for which to check.</param>
- /// <returns>
- /// The high-order word of the return value indicates the types of messages currently in the queue.
- /// The low-order word indicates the types of messages that have been added to the queue and that are
- /// still in the queue since the last call to the <see cref="GetQueueStatus(QueueMessageTypes)"/>,
- /// <see cref="GetMessage(out Msg, IntPtr, uint, uint)"/>, or
- /// <see cref="PeekMessage(out Msg, IntPtr, uint, uint, PeekMessageActions)"/> function.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library)]
- public static extern uint GetQueueStatus([In] QueueMessageTypes flags);
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with monitors.
- /// </summary>
- public static class Monitor
- {
- /// <summary>
- /// Retrieves information about a display monitor.
- /// </summary>
- /// <param name="monitor">A handle to the display monitor of interest.</param>
- /// <param name="monitorInfo">
- /// A pointer to a <see cref="MonitorInfo"/> or MONITORINFOEX structure
- /// that receives information about the specified display monitor.<para/>
- /// You must set the Size member of the structure to the respective structure's size in bytes
- /// before calling the <see cref="GetMonitorInfo(IntPtr, out MonitorInfo)"/> function. Doing so
- /// lets the function determine the type of structure you are passing to it.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is nonzero.<para/>
- /// If the function fails, the return value is zero.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetMonitorInfo([In] IntPtr monitor, [Out] out MonitorInfo monitorInfo);
-
- /// <summary>
- /// Retrieves a handle to the display monitor that contains a specified point.
- /// </summary>
- /// <param name="pt">
- /// A <see cref="Point"/> structure that specifies the point of interest in virtual-screen coordinates.
- /// </param>
- /// <param name="defaultTo">
- /// Determines the function's return value if the point is not contained within any display monitor.
- /// </param>
- /// <returns>
- /// If the point is contained by a display monitor,
- /// the return value is an <see cref="IntPtr"/> handle to that display monitor.<para/>
- /// If the point is not contained by a display monitor,
- /// the return value depends on the value of <paramref name="defaultTo"/>.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr MonitorFromPoint([In] Point pt, [In] MonitorFromDefaultValue defaultTo);
-
- /// <summary>
- /// Retrieves a handle to the display monitor that has the largest area of intersection
- /// with the bounding rectangle of a specified window.
- /// </summary>
- /// <param name="window">A handle to the window of interest.</param>
- /// <param name="defaultTo">
- /// Determines the function's return value if the window does not intersect any display monitor.
- /// </param>
- /// <returns>
- /// If the window intersects one or more display monitor rectangles, the return value is an
- /// <see cref="IntPtr"/> handle to the display monitor that
- /// has the largest area of intersection with the window.<para/>
- /// If the window does not intersect a display monitor,
- /// the return value depends on the value of <paramref name="defaultTo"/>.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr MonitorFromWindow([In] IntPtr window, [In] MonitorFromDefaultValue defaultTo);
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with the mouse.
- /// </summary>
- public static class Mouse
- {
- /// <summary>
- /// Retrieves a handle to the window (if any) that has captured the mouse. Only one window at a time can
- /// capture the mouse; this window receives mouse input whether or not the cursor is within its borders.
- /// </summary>
- /// <returns>
- /// The return value is a handle to the capture window associated with the current thread.<para/>
- /// If no window in the thread has captured the mouse, the return value is <see cref="IntPtr.Zero"/>.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr GetCapture();
-
- /// <summary>
- /// Sets the mouse capture to the specified window belonging to the current thread.
- /// <see cref="SetCapture(IntPtr)"/> captures mouse input either when the mouse is over the capturing window,
- /// or when the mouse button was pressed while the mouse was over the capturing window and the button is
- /// still down. Only one window at a time can capture the mouse.<para/>
- /// If the mouse cursor is over a window created by another thread,
- /// the system will direct mouse input to the specified window only if a mouse button is down.
- /// </summary>
- /// <param name="window">
- /// A handle to the window in the current thread that is to capture the mouse.
- /// </param>
- /// <returns>
- /// The return value is a handle to the window that had previously captured the mouse.
- /// If there is no such window, the return value is <see cref="IntPtr.Zero"/>.
- /// </returns>
- [DllImport(Library)]
- public static extern IntPtr SetCapture(IntPtr window);
-
- /// <summary>
- /// Releases the mouse capture from a window in the current thread and restores normal mouse input
- /// processing. A window that has captured the mouse receives all mouse input, regardless of the position
- /// of the cursor, except when a mouse button is clicked while the cursor
- /// hot spot is in the window of another thread.
- /// </summary>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ReleaseCapture();
-
- /// <summary>
- /// Posts messages when the mouse pointer leaves a window or hovers
- /// over a window for a specified amount of time.
- /// </summary>
- /// <param name="trackMouseEvent">
- /// A pointer to a <see cref="Native.TrackMouseEvent"/> structure that contains tracking information.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool TrackMouseEvent([In] [Out] ref TrackMouseEvent trackMouseEvent);
-
- /// <summary>
- /// Retrieves a history of up to 64 previous coordinates of the mouse or pen.
- /// </summary>
- /// <param name="size">The size, in bytes, of the <see cref="MouseMovePoint"/> structure.</param>
- /// <param name="movePointIn">
- /// A pointer to a <see cref="MouseMovePoint"/> structure containing valid mouse coordinates
- /// (in screen coordinates). It may also contain a time stamp.
- /// </param>
- /// <param name="movePointOutBuffer">
- /// A pointer to a buffer that will receive the points.
- /// It should be at least <paramref name="size"/> * <paramref name="pointAmount"/> in size.
- /// </param>
- /// <param name="pointAmount">The number of points to be retrieved.</param>
- /// <param name="resolution">The resolution desired.</param>
- /// <returns>
- /// If the function succeeds, the return value is the number of points in the buffer.<para/>
- /// Otherwise, the function returns –1.
- /// For extended error information, your application can call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport("user32", SetLastError = true)]
- public static extern int GetMouseMovePointsEx
- (
- [In] uint size,
- [In] ref MouseMovePoint movePointIn,
- [Out] out MouseMovePoint[] movePointOutBuffer,
- [In] int pointAmount,
- [In] GetMouseMovePointsResolution resolution
- );
-
- /// <summary>
- /// Retrieves a history of up to 64 previous coordinates of the mouse or pen.
- /// </summary>
- /// <param name="size">The size, in bytes, of the <see cref="MouseMovePoint"/> structure.</param>
- /// <param name="movePointIn">
- /// A pointer to a <see cref="MouseMovePoint"/> structure containing valid mouse coordinates
- /// (in screen coordinates). It may also contain a time stamp.
- /// </param>
- /// <param name="movePointOutBuffer">
- /// A pointer to a buffer that will receive the points.
- /// It should be at least <paramref name="size"/> * <paramref name="pointAmount"/> in size.
- /// </param>
- /// <param name="pointAmount">The number of points to be retrieved.</param>
- /// <param name="resolution">The resolution desired.</param>
- /// <returns>
- /// If the function succeeds, the return value is the number of points in the buffer.<para/>
- /// Otherwise, the function returns –1.
- /// For extended error information, your application can call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport("user32", SetLastError = true)]
- public static unsafe extern int GetMouseMovePointsEx
- (
- [In] uint size,
- [In] ref MouseMovePoint movePointIn,
- [Out] MouseMovePoint* movePointOutBuffer,
- [In] int pointAmount,
- [In] GetMouseMovePointsResolution resolution
- );
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-using System.Security;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with raw input.
- /// </summary>
- public static class RawInput
- {
- /// <summary>
- /// Calls the default raw input procedure to provide default processing for any raw input messages that
- /// an application does not process. This function ensures that every message is processed.
- /// <see cref="DefRawInputProc(Native.RawInput[], int, uint)"/> is called with the same parameters
- /// received by the window procedure.
- /// </summary>
- /// <param name="rawInputArrayOut">An array of <see cref="Native.RawInput"/> structures.</param>
- /// <param name="rawInputAmount">
- /// The number of <see cref="Native.RawInput"/>
- /// structures pointed to by <paramref name="rawInputArrayOut"/>.
- /// </param>
- /// <param name="headerSize">The size, in bytes, of the <see cref="RawInputHeader"/> structure.</param>
- /// <returns>
- /// If successful, the function returns <see cref="IntPtr.Zero"/>. Otherwise it returns an error value.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library)]
- public static extern IntPtr DefRawInputProc
- (
- [In] Native.RawInput[] rawInputArrayOut,
- [In] int rawInputAmount,
- [In] uint headerSize
- );
-
- /// <summary>
- /// Calls the default raw input procedure to provide default processing for any raw input messages that
- /// an application does not process. This function ensures that every message is processed.
- /// <see cref="DefRawInputProc(Native.RawInput[], int, uint)"/> is called with the same parameters
- /// received by the window procedure.
- /// </summary>
- /// <param name="rawInputArrayOut">
- /// A pointer to an array of <see cref="Native.RawInput"/> structures.
- /// </param>
- /// <param name="rawInputAmount">
- /// The number of <see cref="Native.RawInput"/>
- /// structures pointed to by <paramref name="rawInputArrayOut"/>.
- /// </param>
- /// <param name="headerSize">The size, in bytes, of the <see cref="RawInputHeader"/> structure.</param>
- /// <returns>
- /// If successful, the function returns <see cref="IntPtr.Zero"/>. Otherwise it returns an error value.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library)]
- public static unsafe extern IntPtr DefRawInputProc
- (
- [In] Native.RawInput* rawInputArrayOut,
- [In] int rawInputAmount,
- [In] uint headerSize
- );
-
- /// <summary>
- /// Registers the devices that supplies the raw input data.
- /// </summary>
- /// <param name="rawInputDevices">
- /// An array of <see cref="RawInputDevice"/> structures that
- /// represent the devices that supply the raw input.
- /// </param>
- /// <param name="deviceAmount">
- /// The number of <see cref="RawInputDevice"/> structures pointed to by <paramref name="rawInputDevices"/>.
- /// </param>
- /// <param name="size">The size, in bytes, of a <see cref="RawInputDevice"/> structure.</param>
- /// <returns>
- /// True if the function succeeds; otherwise, false.<para/>
- /// If the function fails, call <see cref="Marshal.GetLastWin32Error"/> for more information.
- /// </returns>
- //[DllImport(Library, SetLastError = true)]
- //[return: MarshalAs(UnmanagedType.Bool)]
- //public static extern bool RegisterRawInputDevices
- //(
- // [In] RawInputDevice[] rawInputDevices,
- // [In] uint deviceAmount,
- // [In] uint size
- //);
-
- /// <summary>
- /// Retrieves the information about the raw input devices for the current application.
- /// </summary>
- /// <param name="rawInputDevicesOut">
- /// An array of <see cref="RawInputDevice"/> structures for the application.
- /// </param>
- /// <param name="deviceAmount">
- /// The number of <see cref="RawInputDevice"/> structures in <paramref name="rawInputDevicesOut"/>.
- /// </param>
- /// <param name="size">The size, in bytes, of a <see cref="RawInputDevice"/> structure.</param>
- /// <returns>
- /// If successful, the function returns a non-negative number that is
- /// the number of <see cref="RawInputDevice"/> structures written to the buffer.<para/>
- /// If the <paramref name="rawInputDevicesOut"/> buffer is too small or null, the function sets the last
- /// error as ERROR_INSUFFICIENT_BUFFER, returns -1, and sets <paramref name="deviceAmount"/> to the
- /// required number of devices. If the function fails for any other reason, it returns -1.<para/>
- /// For more details, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- //[DllImport(Library, SetLastError = true)]
- //public static extern uint GetRegisteredRawInputDevices
- //(
- // [Out] [Optional] RawInputDevice[] rawInputDevicesOut,
- // [In] [Out] ref uint deviceAmount,
- // [In] uint size
- //);
-
- /// <summary>
- /// Performs a buffered read of the raw input data.
- /// </summary>
- /// <param name="data">
- /// A buffer of <see cref="RawInput"/> structures that contain the raw input data.
- /// If null, the minimum required buffer, in bytes, is returned in <paramref name="rawInputSize"/>.
- /// </param>
- /// <param name="rawInputSize">The size, in bytes, of a <see cref="RawInput"/> structure.</param>
- /// <param name="headerSize">The size, in bytes, of the <see cref="RawInputHeader"/> structure.</param>
- /// <returns>
- /// If <paramref name="data"/> is null and the function is successful, the return value is zero.
- /// If <paramref name="data"/> is not null and the function is successful, the return value is the
- /// number of <see cref="RawInput"/> structures written to <paramref name="data"/>.<para/>
- /// If an error occurs, the return value is -1.
- /// Call <see cref="Marshal.GetLastWin32Error"/> for the error code.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern uint GetRawInputBuffer
- (
- [Out] [Optional] Native.RawInput[] data,
- [In] [Out] ref uint rawInputSize,
- [In] uint headerSize
- );
-
- /// <summary>
- /// Performs a buffered read of the raw input data.
- /// </summary>
- /// <param name="data">
- /// A pointer to a buffer of <see cref="RawInput"/> structures that contain the raw input data.
- /// If null, the minimum required buffer, in bytes, is returned in <paramref name="rawInputSize"/>.
- /// </param>
- /// <param name="rawInputSize">The size, in bytes, of a <see cref="RawInput"/> structure.</param>
- /// <param name="headerSize">The size, in bytes, of the <see cref="RawInputHeader"/> structure.</param>
- /// <returns>
- /// If <paramref name="data"/> is null and the function is successful, the return value is zero.
- /// If <paramref name="data"/> is not null and the function is successful, the return value is the
- /// number of <see cref="RawInput"/> structures written to <paramref name="data"/>.<para/>
- /// If an error occurs, the return value is (uint)-1.
- /// Call <see cref="Marshal.GetLastWin32Error"/> for the error code.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static unsafe extern uint GetRawInputBuffer
- (
- [Out] [Optional] Native.RawInput* data,
- [In] [Out] ref uint rawInputSize,
- [In] uint headerSize
- );
-
- /// <summary>
- /// Enumerates the raw input devices attached to the system.
- /// </summary>
- /// <param name="deviceListArrayOut">
- /// An array of <see cref="RawInputDeviceList"/> structures for the devices attached to the system.
- /// If null, the number of devices are returned in <paramref name="deviceListAmount"/>.
- /// </param>
- /// <param name="deviceListAmount">
- /// If <paramref name="deviceListArrayOut"/> is null, the function populates this variable with
- /// the number of devices attached to the system; otherwise, this variable specifies the number of
- /// <see cref="RawInputDeviceList"/> structures that can be contained in the buffer to which
- /// <paramref name="deviceListArrayOut"/> points. If this value is less than the number of devices
- /// attached to the system, the function returns the actual number of devices in this variable
- /// and fails with ERROR_INSUFFICIENT_BUFFER.
- /// </param>
- /// <param name="deviceListSize">
- /// The size of a <see cref="RawInputDeviceList"/> structure, in bytes.
- /// </param>
- /// <returns>
- /// If the function is successful, the return value is the number of devices stored in the buffer
- /// pointed to by <paramref name="deviceListArrayOut"/>.<para/>
- /// On any other error, the function returns (uint)-1 and
- /// <see cref="Marshal.GetLastWin32Error"/> returns the error indication.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern uint GetRawInputDeviceList
- (
- [Out] [Optional] RawInputDeviceList[] deviceListArrayOut,
- [In] [Out] ref uint deviceListAmount,
- [In] uint deviceListSize
- );
-
- /// <summary>
- /// Enumerates the raw input devices attached to the system.
- /// </summary>
- /// <param name="deviceListArrayOut">
- /// A pointer to an array of <see cref="RawInputDeviceList"/> structures for the devices attached to the
- /// system. If null, the number of devices are returned in <paramref name="deviceListAmount"/>.
- /// </param>
- /// <param name="deviceListAmount">
- /// If <paramref name="deviceListArrayOut"/> is null, the function populates this variable with
- /// the number of devices attached to the system; otherwise, this variable specifies the number of
- /// <see cref="RawInputDeviceList"/> structures that can be contained in the buffer to which
- /// <paramref name="deviceListArrayOut"/> points. If this value is less than the number of devices
- /// attached to the system, the function returns the actual number of devices in this variable
- /// and fails with ERROR_INSUFFICIENT_BUFFER.
- /// </param>
- /// <param name="deviceListSize">
- /// The size of a <see cref="RawInputDeviceList"/> structure, in bytes.
- /// </param>
- /// <returns>
- /// If the function is successful, the return value is the number of devices stored in the buffer
- /// pointed to by <paramref name="deviceListArrayOut"/>.<para/>
- /// On any other error, the function returns (uint)-1 and
- /// <see cref="Marshal.GetLastWin32Error"/> returns the error indication.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static unsafe extern uint GetRawInputDeviceList
- (
- [Out] [Optional] RawInputDeviceList* deviceListArrayOut,
- [In] [Out] ref uint deviceListAmount,
- [In] uint deviceListSize
- );
-
- /// <summary>
- /// Retrieves information about the raw input device.
- /// </summary>
- /// <param name="device">
- /// A handle to the raw input device. This comes from the <see cref="RawInputHeader.Device"/> or
- /// from <see cref="GetRawInputDeviceList(RawInputDeviceList[], ref uint, uint)"/>.
- /// </param>
- /// <param name="command">Specifies what data will be returned in <paramref name="data"/>.</param>
- /// <param name="data">
- /// A buffer that contains the information specified by <paramref name="command"/>.
- /// If <paramref name="command"/> is <see cref="GetRawInputDeviceInfoEnum.DeviceInfo"/>, set the
- /// <see cref="RawInputDeviceInfo.Size"/> to <see cref="RawInputDeviceInfo.SizeInBytes"/> before calling
- /// <see cref="GetRawInputDeviceInfo(IntPtr, GetRawInputDeviceInfoEnum, IntPtr, ref uint)"/>.
- /// </param>
- /// <param name="dataSize">The size, in bytes, of the data in <paramref name="data"/>.</param>
- /// <returns>
- /// If successful, this function returns a non-negative number indicating the number
- /// of bytes copied to <paramref name="data"/>.<para/>
- /// If pData is not large enough for the data, the function returns -1. If <paramref name="data"/> is
- /// <see cref="IntPtr.Zero"/>, the function returns a value of zero. In both of these cases,
- /// <paramref name="dataSize"/> is set to the minimum size required for the <paramref name="data"/> buffer.
- /// <para/>
- /// Call <see cref="Marshal.GetLastWin32Error"/> to identify any other errors.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern uint GetRawInputDeviceInfo
- (
- [In] [Optional] IntPtr device,
- [In] GetRawInputDeviceInfoEnum command,
- [In] [Out] [Optional] byte[] data,
- [In] [Out] ref uint dataSize
- );
-
- /// <summary>
- /// Retrieves information about the raw input device.
- /// </summary>
- /// <param name="device">
- /// A handle to the raw input device. This comes from the <see cref="RawInputHeader.Device"/> or
- /// from <see cref="GetRawInputDeviceList(RawInputDeviceList[], ref uint, uint)"/>.
- /// </param>
- /// <param name="command">Specifies what data will be returned in <paramref name="data"/>.</param>
- /// <param name="data">
- /// A pointer to a buffer that contains the information specified by <paramref name="command"/>.
- /// If <paramref name="command"/> is <see cref="GetRawInputDeviceInfoEnum.DeviceInfo"/>, set the
- /// <see cref="RawInputDeviceInfo.Size"/> to <see cref="RawInputDeviceInfo.SizeInBytes"/> before calling
- /// <see cref="GetRawInputDeviceInfo(IntPtr, GetRawInputDeviceInfoEnum, IntPtr, ref uint)"/>.
- /// </param>
- /// <param name="dataSize">The size, in bytes, of the data in <paramref name="data"/>.</param>
- /// <returns>
- /// If successful, this function returns a non-negative number indicating the number
- /// of bytes copied to <paramref name="data"/>.<para/>
- /// If pData is not large enough for the data, the function returns -1. If <paramref name="data"/> is
- /// <see cref="IntPtr.Zero"/>, the function returns a value of zero. In both of these cases,
- /// <paramref name="dataSize"/> is set to the minimum size required for the <paramref name="data"/> buffer.
- /// <para/>
- /// Call <see cref="Marshal.GetLastWin32Error"/> to identify any other errors.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static unsafe extern uint GetRawInputDeviceInfo
- (
- [In] [Optional] IntPtr device,
- [In] GetRawInputDeviceInfoEnum command,
- [In] [Out] [Optional] IntPtr data,
- [In] [Out] ref uint dataSize
- );
-
- /// <summary>
- /// Retrieves information about the raw input device.
- /// </summary>
- /// <param name="device">
- /// A handle to the raw input device. This comes from <see cref="RawInputHeader.Device"/> or from
- /// <see cref="GetRawInputDeviceList(RawInputDeviceList[], ref uint, uint)"/>.
- /// </param>
- /// <param name="command">Specifies what data will be returned in <paramref name="data"/>.</param>
- /// <param name="data">
- /// A pointer to a buffer that contains the information specified by <paramref name="command"/>. If
- /// <paramref name="command"/> is <see cref="GetRawInputDeviceInfoEnum.DeviceInfo"/>, set the
- /// <see cref="RawInputDeviceInfo.Size"/> to <see cref="RawInputDeviceInfo.SizeInBytes"/>
- /// before calling this.
- /// </param>
- /// <param name="size">The size, in bytes, of the data in <paramref name="data"/>.</param>
- /// <returns>
- /// If successful, this function returns a non-negative number
- /// indicating the number of bytes copied to <paramref name="data"/>.<para/>
- /// If <paramref name="data"/> is not large enough for the data, the function returns -1. If
- /// <paramref name="data"/> is null, the function returns a value of zero. In both of these cases,
- /// <paramref name="size"/> is set to the minimum size required for the <paramref name="data"/> buffer.
- /// <para/>
- /// Call <see cref="Marshal.GetLastWin32Error"/> to identify any other errors.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern uint GetRawInputDeviceInfo
- (
- [In] [Optional] IntPtr device,
- [In] GetRawInputDeviceInfoEnum command,
- [In] [Out] [Optional] ref RawInputDeviceInfo data,
- [In] [Out] ref uint size
- );
-
- /// <summary>
- /// Retrieves the raw input header from the specified device.
- /// </summary>
- /// <param name="rawInput">
- /// A handle to the <see cref="Native.RawInput"/> structure. This comes from the lParam in
- /// <see cref="WindowMessage.Input"/>.
- /// </param>
- /// <param name="header">The <see cref="RawInputHeader"/> structure to receive the raw data.</param>
- /// <returns>
- /// If the function is successful, the return value is the number of bytes copied into
- /// <paramref name="header"/>.<para/>
- /// If there is an error, the return value is (uint)-1 [== <see cref="uint.MaxValue"/>].
- /// </returns>
- public static unsafe uint GetRawInputData(IntPtr rawInput, out RawInputHeader header)
- {
- uint size = RawInputHeader.SizeInBytes;
- fixed (RawInputHeader* headerPtr = &header)
- {
- return GetRawInputData
- (
- rawInput,
- GetRawInputDataCommand.Header,
- (IntPtr)headerPtr,
- ref size,
- RawInputHeader.SizeInBytes
- );
- }
- }
-
- /// <summary>
- /// Retrieves raw input data from the specified device.
- /// </summary>
- /// <param name="rawInput">
- /// A handle to the <see cref="Native.RawInput"/> structure. This comes from the lParam in
- /// <see cref="WindowMessage.Input"/>.
- /// </param>
- /// <param name="data">The <see cref="Native.RawInput"/> structure to receive the raw data.</param>
- /// <returns>
- /// If the function is successful, the return value is the number of bytes copied into
- /// <paramref name="data"/>.<para/>
- /// If there is an error, the return value is (uint)-1 [== <see cref="uint.MaxValue"/>].
- /// </returns>
- public static unsafe uint GetRawInputData(IntPtr rawInput, out Native.RawInput data)
- {
- uint size = Native.RawInput.SizeInBytes;
- fixed (Native.RawInput* dataPtr = &data)
- {
- return GetRawInputData
- (
- rawInput,
- GetRawInputDataCommand.Input,
- (IntPtr)dataPtr,
- ref size,
- RawInputHeader.SizeInBytes
- );
- }
- }
-
- /// <summary>
- /// Retrieves the raw input from the specified device.<para/>
- /// Consider using one of the other overloads for a better experience.
- /// </summary>
- /// <param name="rawInput">
- /// A handle to the <see cref="Native.RawInput"/> structure. This comes from the lParam in
- /// <see cref="WindowMessage.Input"/>.
- /// </param>
- /// <param name="command">The command flag.</param>
- /// <param name="data">
- /// A pointer to the data that comes from the <see cref="Native.RawInput"/> structure. This depends on the
- /// value of <paramref name="command"/>. If <paramref name="data"/> is <see cref="IntPtr.Zero"/>,
- /// the required size of the buffer is returned in <paramref name="size"/>.
- /// </param>
- /// <param name="size">The size, in bytes, of the data in <paramref name="data"/>.</param>
- /// <param name="headerSize">The size, in bytes, of the <see cref="RawInputHeader"/> structure.</param>
- /// <returns>
- /// If <paramref name="data"/> is <see cref="IntPtr.Zero"/> and the function is successful, the return
- /// value is 0. If <paramref name="data"/> is not <see cref="IntPtr.Zero"/> and the function is successful,
- /// the return value is the number of bytes copied into <paramref name="data"/>.<para/>
- /// If there is an error, the return value is (uint)-1 [== <see cref="uint.MaxValue"/>].
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern uint GetRawInputData
- (
- [In] IntPtr rawInput,
- [In] GetRawInputDataCommand command,
- [Out] [Optional] IntPtr data,
- [In] [Out] ref uint size,
- [In] uint headerSize
- );
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about a class of devices.
- /// </summary>
- public struct BroadcastDeviceInterface
- {
- /// <summary>
- /// The size of this structure, in bytes. This is the size of the members plus the actual length of the
- /// <see cref="Name"/> string (the null character is accounted for by the declaration of <see cref="Name"/>
- /// as a one-character array).
- /// </summary>
- public uint Size;
-
- /// <summary>
- /// Official documentation states "Set to <see cref="DeviceBroadcastType.DeviceInterface"/>".<para/>
- /// Only set to something else if you know what you're doing.
- /// </summary>
- public DeviceBroadcastType DeviceType;
-
- /// <summary>
- /// Reserved; do not use.
- /// </summary>
- public uint Reserved;
-
- /// <summary>
- /// The GUID for the interface device class.
- /// </summary>
- public Guid ClassGuid;
-
- /// <summary>
- /// Gets a string that specifies the name of the device.
- /// </summary>
- public unsafe string Name
- {
- get
- {
- fixed (char* namePtr = &_name)
- {
- return Marshal.PtrToStringUni((IntPtr)namePtr);
- }
- }
- }
-
- /// <summary>
- /// The first character of the <see cref="Name"/>.
- /// </summary>
- private char _name;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<BroadcastDeviceInterface>();
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the initialization parameters passed to the window procedure of an application. These members are
- /// identical to the parameters of the
- /// <see cref="User32.Window.CreateWindowEx(ExtendedWindowStyles, IntPtr, string,
- /// WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/> function.
- /// </summary>
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public struct CreateStruct
- {
- /// <summary>
- /// Contains additional data which may be used to create the window. If the window is being created as a
- /// result of a call to the CreateWindow or
- /// <see cref="User32.Window.CreateWindowEx(ExtendedWindowStyles, IntPtr, string,
- /// WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/>
- /// function, this member contains the value of the lpParam parameter specified in the function call.<para/>
- /// If the window being created is a MDI client window, this member contains a pointer to a CLIENTCREATESTRUCT
- /// structure. If the window being created is a MDI child window, this member contains a pointer to an
- /// MDICREATESTRUCT structure.<para/>
- /// If the window is being created from a dialog template, this member is the address of a <see cref="short"/>
- /// value that specifies the size, in bytes, of the window creation data. The value is immediately followed
- /// by the creation data.
- /// </summary>
- public IntPtr CreateParams;
-
- /// <summary>
- /// Handle to the module that owns the new window.
- /// </summary>
- public IntPtr Instance;
-
- /// <summary>
- /// Handle to the menu to be used by the new window.
- /// </summary>
- public IntPtr Menu;
-
- /// <summary>
- /// Handle to the parent window, if the window is a child window.
- /// If the window is owned, this member identifies the owner window.
- /// If the window is not a child or owned window, this member is null.
- /// </summary>
- public IntPtr Parent;
-
- /// <summary>
- /// Specifies the height of the new window, in pixels.
- /// </summary>
- public int Height;
-
- /// <summary>
- /// Specifies the width of the new window, in pixels.
- /// </summary>
- public int Width;
-
- /// <summary>
- /// Specifies the y-coordinate of the upper left corner of the new window.
- /// If the new window is a child window, coordinates are relative to the parent window.
- /// Otherwise, the coordinates are relative to the screen origin.
- /// </summary>
- public int Y;
-
- /// <summary>
- /// Specifies the x-coordinate of the upper left corner of the new window.
- /// If the new window is a child window, coordinates are relative to the parent window.
- /// Otherwise, the coordinates are relative to the screen origin.
- /// </summary>
- public int X;
-
- /// <summary>
- /// Specifies the style for the new window.
- /// </summary>
- public WindowStyles Style;
-
- /// <summary>
- /// Pointer to a null-terminated string that specifies the name of the new window.
- /// </summary>
- public string Name;
-
- /// <summary>
- /// Either a pointer to a null-terminated string or an atom that specifies the class name
- /// of the new window.
- /// </summary>
- public IntPtr ClassName;
-
- /// <summary>
- /// The extended window style for the new window.
- /// </summary>
- public ExtendedWindowStyles ExtendedStyle;
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Specifies characteristics of display and print devices.<para/>
- /// Before accessing a field, check the <see cref="Fields"/> field to determine whether any given field is set.
- /// </summary>
- [StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
- public struct DeviceMode
- {
- /// <summary>
- /// Length of the <see cref="DeviceName"/> in characters.
- /// </summary>
- public const int DeviceNameLength = 32;
-
- /// <summary>
- /// Length of the <see cref="FormName"/> in characters.
- /// </summary>
- public const int FormNameLength = 32;
-
- /// <summary>
- /// Default value for <see cref="SpecVersion"/> and <see cref="DriverVersion"/> (see the documentation of those
- /// fields for more information).
- /// </summary>
- public const ushort DefaultSpecVersion = 800;
-
- /// <summary>
- /// A zero-terminated character array that specifies the "friendly" name of the printer or display.
- /// </summary>
- [FieldOffset(0)]
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
- public string DeviceName;
-
- /// <summary>
- /// The version number of the initialization data specification on which the structure is based.
- /// The current version number is identified by <see cref="DefaultSpecVersion"/>.
- /// </summary>
- [FieldOffset(64)]
- public ushort SpecVersion;
-
- /// <summary>
- /// For a printer, specifies the printer driver version number assigned by the printer driver developer.<para/>
- /// Display drivers can set this member to <see cref="DefaultSpecVersion"/>.
- /// </summary>
- [FieldOffset(66)]
- public ushort DriverVersion;
-
- /// <summary>
- /// Specifies the size in bytes of the public DEVMODEW structure, not including any private,
- /// driver-specified members identified by the dmDriverExtra member.<para/>
- /// Set this to <see cref="SizeInBytes"/>.
- /// </summary>
- [FieldOffset(68)]
- public ushort Size;
-
- /// <summary>
- /// Specifies the number of bytes of private driver data that follow the public structure members.
- /// If a device driver does not provide private members, this member should be set to zero.
- /// </summary>
- [FieldOffset(70)]
- public ushort DriverExtra;
-
- /// <summary>
- /// Specifies bit flags identifying which of the following members are in use.
- /// For example, the <see cref="DeviceModeFieldFlags.Orientation"/> flag is set when the
- /// <see cref="PrinterDeviceOptions.Orientation"/> member contains valid data.
- /// </summary>
- [FieldOffset(72)]
- public DeviceModeFieldFlags Fields;
-
- /// <summary>
- /// Provides printer-specific device mode options.
- /// </summary>
- [FieldOffset(76)]
- public PrinterDeviceOptions PrinterOptions;
-
- /// <summary>
- /// Provides display-specific device mode options.
- /// </summary>
- [FieldOffset(76)]
- public DisplayDeviceOptions DisplayOptions;
-
- /// <summary>
- /// For printers, specifies whether a color printer should print color or monochrome.
- /// </summary>
- [FieldOffset(92)]
- public PrinterColor Color;
-
- /// <summary>
- /// For printers, specifies duplex (double-sided) printing for duplex-capable printers.
- /// </summary>
- [FieldOffset(94)]
- public PrinterDuplex Duplex;
-
- /// <summary>
- /// For printers, specifies the y resolution of the printer, in DPI. If this member is used,
- /// the <see cref="PrinterDeviceOptions.PrintQuality"/> member specifies the x resolution.
- /// </summary>
- [FieldOffset(96)]
- public short YResolution;
-
- /// <summary>
- /// For printers, specifies how TrueType fonts should be printed.
- /// </summary>
- [FieldOffset(98)]
- public PrinterTrueTypeOption TrueTypeOption;
-
- /// <summary>
- /// For printers, specifies whether multiple copies should be collated. 1 == true, 0 == false.
- /// </summary>
- [FieldOffset(100)]
- public short Collate;
-
- /// <summary>
- /// Gets the name of the printer form to use; such as "Letter" or "Legal".
- /// This must be a name that can be obtain by calling the Win32 EnumForms function.
- /// </summary>
- public unsafe string FormName
- {
- get
- {
- fixed (char* formNamePtr = &_formName)
- {
- return Marshal.PtrToStringUni((IntPtr)formNamePtr);
- }
- }
- }
-
- /// <summary>
- /// With the current struct layout (which is set in stone because of interoperability with the Windows API),
- /// there is no way to put a `string` type at this position(string is a reference type -> there is a pointer
- /// here, which is either 4 or 8 bytes depending on the platform). This means that a string can never be
- /// properly aligned at position 102 (which, again, can't be changed). This is why the <see cref="FormName"/>
- /// property exists.
- /// </summary>
- [FieldOffset(102)]
- private char _formName;
-
- /// <summary>
- /// For displays, specifies the number of logical pixels per inch of a display device and should be equal
- /// to the ulLogPixels member of the GDIINFO structure.
- /// </summary>
- [FieldOffset(166)]
- public ushort LogPixels;
-
- /// <summary>
- /// For displays, specifies the color resolution, in bits per pixel, of a display device.
- /// </summary>
- [FieldOffset(168)]
- public uint BitsPerPixel;
-
- /// <summary>
- /// For displays, specifies the width, in pixels, of the visible device surface.
- /// </summary>
- [FieldOffset(172)]
- public uint WidthInPixels;
-
- /// <summary>
- /// For displays, specifies the height, in pixels, of the visible device surface.
- /// </summary>
- [FieldOffset(176)]
- public uint HeightInPixels;
-
- /// <summary>
- /// For displays, specifies a display device's display mode.
- /// </summary>
- [FieldOffset(180)]
- public DisplayFlags DisplayFlags;
-
- /// <summary>
- /// For printers, specifies whether the print system handles "N-up" printing
- /// (playing multiple EMF logical pages onto a single physical page).
- /// </summary>
- [FieldOffset(180)]
- public uint Nup;
-
- /// <summary>
- /// For displays, specifies the frequency, in hertz, of a display device in its current mode.
- /// </summary>
- [FieldOffset(184)]
- public uint DisplayFrequency;
-
- /// <summary>
- /// For printers, specifies how Image Color Management (ICM) is handled. For a non-ICM application, this field
- /// determines if ICM is enabled or disabled. For ICM applications, the system examines this field to determine
- /// how to handle ICM support.<para/>
- /// The value of this field can be one of the pre-defined <see cref="PrinterIcmMethod"/> values or a printer
- /// driver-defined value greater than or equal to <see cref="PrinterIcmMethod.User"/>.
- /// </summary>
- [FieldOffset(188)]
- public PrinterIcmMethod IcmMethod;
-
- /// <summary>
- /// For printers, specifies which color matching method, or intent, is used by default. This field is primarily
- /// for non-ICM applications. ICM applications can establish intents by using the ICM functions.<para/>
- /// The value of this field can be one of the pre-defined <see cref="PrinterIcmIntent"/> values or a printer
- /// driver-defined value greater than or equal to <see cref="PrinterIcmIntent.User"/>.
- /// </summary>
- [FieldOffset(192)]
- public PrinterIcmIntent IcmIntent;
-
- /// <summary>
- /// For printers, specifies the type of media being printed on.<para/>
- /// The value of this field can be one of the pre-defined <see cref="PrinterMediaType"/> values or a printer
- /// driver-defined value greater than or equal to <see cref="PrinterMediaType.User"/>.
- /// </summary>
- [FieldOffset(196)]
- public PrinterMediaType MediaType;
-
- /// <summary>
- /// Specifies how dithering is to be done.<para/>
- /// The value of this field can be one of the pre-defined <see cref="PrinterDitherType"/> values or a printer
- /// driver-defined value greater than or equal to <see cref="PrinterDitherType.User"/>.
- /// </summary>
- [FieldOffset(200)]
- public PrinterDitherType DitherType;
-
- /// <summary>
- /// Is reserved for system use and must be zero.
- /// </summary>
- [FieldOffset(204)]
- public uint Reserved1;
-
- /// <summary>
- /// Is reserved for system use and must be zero.
- /// </summary>
- [FieldOffset(208)]
- public uint Reserved2;
-
- /// <summary>
- /// Must be zero.
- /// </summary>
- [FieldOffset(212)]
- public uint PanningWidth;
-
- /// <summary>
- /// Must be zero.
- /// </summary>
- [FieldOffset(216)]
- public uint PanningHeight;
-
- /// <summary>
- /// The size of the structure in bytes.
- /// </summary>
- public static readonly ushort SizeInBytes = (ushort)Marshal.SizeOf<DeviceMode>();
-
- /// <summary>
- /// Contains printer-specific device options.
- /// </summary>
- public struct PrinterDeviceOptions
- {
- /// <summary>
- /// For printers, specifies the paper orientation.
- /// </summary>
- public PrinterPaperOrientation Orientation;
-
- /// <summary>
- /// For printers, specifies the size of the paper to be printed on. This member must be zero if the length
- /// and width of the paper are specified by the <see cref="PaperLength"/> and <see cref="PaperWidth"/>
- /// members.
- /// </summary>
- public PrinterPaperSize PaperSize;
-
- /// <summary>
- /// For printers, specifies the length of the paper, in units of 1/10 of a millimeter.
- /// This value overrides the length of the paper specified by the <see cref="PaperSize"/> member,
- /// and is used if the paper is of a custom size, or if the device is a dot matrix printer,
- /// which can print a page of arbitrary length.
- /// </summary>
- public short PaperLength;
-
- /// <summary>
- /// For printers, specifies the width of the paper, in units of 1/10 of a millimeter.
- /// This value overrides the width of the paper specified by the <see cref="PaperSize"/> member.
- /// This member must be used if <see cref="PaperLength"/> is used.
- /// </summary>
- public short PaperWidth;
-
- /// <summary>
- /// For printers, specifies the percentage by which the image is to be scaled for printing. The image's
- /// page size is scaled to the physical page by a factor of <see cref="Scale"/>/100. For example,
- /// a 17-inch by 22-inch image with a scale value of 100 requires 17x22-inch paper, while the same image
- /// with a scale value of 50 should print as half-sized and fit on letter-sized paper.
- /// </summary>
- public short Scale;
-
- /// <summary>
- /// For printers, specifies the number of copies to be printed, if the device supports multiple copies.
- /// </summary>
- public short Copies;
-
- /// <summary>
- /// For printers, specifies the printer's default input bin. If the specified constant is
- /// <see cref="PrinterDefaultSource.FormSource"/>, the input bin should be selected automatically.
- /// </summary>
- public PrinterDefaultSource DefaultSource;
-
- /// <summary>
- /// For printers, specifies the printer resolution. Either set this to one of the
- /// <see cref="PrinterPrintQuality"/> values, or use a positive value specifying the number of DPI for the
- /// x resolution, with the y resolution being specified by <see cref="YResolution"/>.
- /// </summary>
- public PrinterPrintQuality PrintQuality;
- }
-
- /// <summary>
- /// Contains display-specific device options.
- /// </summary>
- public struct DisplayDeviceOptions
- {
- /// <summary>
- /// For displays, specifies a <see cref="Point"/> structure containing the x- and y-coordinates of the
- /// upper-left corner of the display, in desktop coordinates. This member is used to determine the
- /// relative position of monitors in a multiple monitor environment.
- /// </summary>
- public Point Position;
-
- /// <summary>
- /// For displays, specifies the orientation at which images should be presented.
- /// </summary>
- public DisplayOrientation DisplayOrientation;
-
- /// <summary>
- /// For fixed-resolution displays, specifies how the device can present a lower-resolution mode on a
- /// higher-resolution display. For example, if a display device's resolution is fixed at 1024 X 768,
- /// and its mode is set to 640 x 480, the device can either display a 640 X 480 image within the 1024 X 768
- /// screen space, or stretch the 640 X 480 image to fill the larger screen space.
- /// </summary>
- public DisplayFixedOutputType DisplayFixedOutput;
- }
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Receives information about the display device specified by the iDevNum parameter of the
- /// <see cref="User32.DeviceContext.EnumDisplayDevices(string, uint, out DisplayDevice, uint)"/> function.
- /// </summary>
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public struct DisplayDevice
- {
- /// <summary>
- /// Size, in bytes, of the structure. This must be initialized prior to calling
- /// <see cref="User32.DeviceContext.EnumDisplayDevices(string, uint, out DisplayDevice, uint)"/>.
- /// </summary>
- /// <seealso cref="SizeInBytes"/>
- public uint Size;
-
- /// <summary>
- /// An array of characters identifying the device name.
- /// This is either the adapter device or the monitor device.
- /// </summary>
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
- public string DeviceName;
-
- /// <summary>
- /// An array of characters containing the device context string.
- /// This is either a description of the display adapter or of the display monitor.
- /// </summary>
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
- public string DeviceString;
-
- /// <summary>
- /// Device state flags. It can be any reasonable combination of <see cref="DisplayDeviceStateFlags"/>.
- /// </summary>
- public DisplayDeviceStateFlags StateFlags;
-
- /// <summary>
- /// Not used.
- /// </summary>
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
- public string DeviceID;
-
- /// <summary>
- /// Reserved.
- /// </summary>
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
- public string DeviceKey;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<DisplayDevice>();
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains window class information. It is used with the
- /// <see cref="User32.WindowClass.RegisterClassEx(ref ExtendedWindowClass)"/> and
- /// <see cref="User32.WindowClass.GetClassInfoEx(IntPtr, string, out ExtendedWindowClass)"/> functions.<para/>
- /// The <see cref="ExtendedWindowClass"/> structure is similar to the <see cref="WindowClass"/> structure.
- /// There are two differences. <see cref="ExtendedWindowClass"/> includes the <see cref="Size"/> member, which
- /// specifies the size of the structure, and the <see cref="IconSmall"/> member, which contains a handle
- /// to a small icon associated with the window class.
- /// </summary>
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public struct ExtendedWindowClass
- {
- /// <summary>
- /// The size, in bytes, of this structure. Set this member to <see cref="SizeInBytes"/>.<para/>
- /// Be sure to set this member before calling the
- /// <see cref="User32.WindowClass.GetClassInfoEx(IntPtr, IntPtr, out ExtendedWindowClass)"/> function.
- /// </summary>
- public uint Size;
-
- /// <summary>
- /// The class style(s). This member can be any combination of <see cref="WindowClassStyles"/>.
- /// </summary>
- public WindowClassStyles Style;
-
- /// <summary>
- /// A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure.
- /// </summary>
- public WindowProc WindowProc;
-
- /// <summary>
- /// The number of extra bytes to allocate following the window-class structure.
- /// The system initializes the bytes to zero.
- /// </summary>
- public int ClassExtra;
-
- /// <summary>
- /// The number of extra bytes to allocate following the window instance. The system initializes the bytes
- /// to zero. If an application uses <see cref="ExtendedWindowClass"/> to register a dialog box created by
- /// using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA.
- /// </summary>
- public int WindowExtra;
-
- /// <summary>
- /// A handle to the instance that contains the window procedure for the class.
- /// </summary>
- public IntPtr Instance;
-
- /// <summary>
- /// A handle to the class icon. This member must be a handle to an icon resource.
- /// If this member is <see cref="IntPtr.Zero"/>, the system provides a default icon.
- /// </summary>
- public IntPtr Icon;
-
- /// <summary>
- /// A handle to the class cursor. This member must be a handle to a cursor resource.
- /// If this member is <see cref="IntPtr.Zero"/>, an application must explicitly set the cursor shape
- /// whenever the mouse moves into the application's window.
- /// </summary>
- public IntPtr Cursor;
-
- /// <summary>
- /// A handle to the class background brush. This member can be a handle to the brush to be used for
- /// painting the background, or it can be a color value.<para/>
- /// For more information on setting this to a color value, check the official documentation.
- /// </summary>
- public IntPtr Background;
-
- /// <summary>
- /// Pointer to a string that specifies the resource name of the class menu, as the name appears in the
- /// resource file. If this member is null, windows belonging to this class have no default menu.
- /// </summary>
- public string MenuName;
-
- /// <summary>
- /// A string specifying the window class name. The class name can be any name registered with
- /// RegisterClass or <see cref="User32.WindowClass.RegisterClassEx(ref ExtendedWindowClass)"/>,
- /// or any of the predefined control-class names.
- /// </summary>
- public string ClassName;
-
- /// <summary>
- /// A handle to a small icon that is associated with the window class. If this member is
- /// <see cref="IntPtr.Zero"/>, the system searches the icon resource specified by the hIcon member for an icon
- /// of the appropriate size to use as the small icon.
- /// </summary>
- public IntPtr IconSmall;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<ExtendedWindowClass>();
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about an icon or a cursor.
- /// </summary>
- public struct IconInfo
- {
- /// <summary>
- /// Specifies whether this structure defines an icon or a cursor. A
- /// value of true specifies an icon; false specifies a cursor.
- /// </summary>
- public bool Icon;
-
- /// <summary>
- /// The x-coordinate of a cursor's hot spot. If this structure defines
- /// an icon, the hot spot is always in the center of the icon, and
- /// this member is ignored.
- /// </summary>
- public uint XHotspot;
-
- /// <summary>
- /// The y-coordinate of a cursor's hot spot. If this structure defines
- /// an icon, the hot spot is always in the center of the icon, and
- /// this member is ignored.
- /// </summary>
- public uint YHotspot;
-
- /// <summary>
- /// The icon bitmask bitmap. If this structure defines a black and
- /// white icon, this bitmask is formatted so that the upper half is
- /// the icon AND bitmask and the lower half is the icon XOR bitmask.
- /// Under this condition, the height should be an even multiple of
- /// two. If this structure defines a color icon, this mask only
- /// defines the AND bitmask of the icon.
- /// </summary>
- public IntPtr BitmapMask;
-
- /// <summary>
- /// A handle to the icon color bitmap. This member can be optional if
- /// this structure defines a black and white icon. The AND bitmask of
- /// <see cref="BitmapMask"/> is applied with the SRCAND flag to the destination;
- /// subsequently, the color bitmap is applied (using XOR) to the
- /// destination by using the SRCINVERT flag.
- /// </summary>
- public IntPtr BitmapColor;
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about a display monitor.
- /// </summary>
- public struct MonitorInfo
- {
- /// <summary>
- /// The size of the structure, in bytes. Set this member to <see cref="SizeInBytes"/> before calling the
- /// <see cref="User32.Monitor.GetMonitorInfo(System.IntPtr, out MonitorInfo)"/> function.
- /// </summary>
- public uint Size;
-
- /// <summary>
- /// A <see cref="Rect"/> structure that specifies the display monitor rectangle, expressed in virtual-screen
- /// coordinates. Note that if the monitor is not the primary display monitor, some of the rectangle's
- /// coordinates may be negative values.
- /// </summary>
- public Rect Monitor;
-
- /// <summary>
- /// A <see cref="Rect"/> structure that specifies the work area rectangle of the display monitor,
- /// expressed in virtual-screen coordinates. Note that if the monitor is not the primary display monitor,
- /// some of the rectangle's coordinates may be negative values.
- /// </summary>
- public Rect Work;
-
- /// <summary>
- /// A set of flags that represent attributes of the display monitor.<para/>
- /// The (currently only) defined flag is "Primary" with a value of 1, so a value of 1 means the display is
- /// primary while a value of 0 means that it is not.
- /// </summary>
- public uint Flags;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<MonitorInfo>();
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about the mouse's location in screen coordinates.
- /// </summary>
- public struct MouseMovePoint
- {
- /// <summary>
- /// The x-coordinate of the mouse.
- /// </summary>
- public int X;
-
- /// <summary>
- /// The y-coordinate of the mouse.
- /// </summary>
- public int Y;
-
- /// <summary>
- /// The time stamp of the mouse coordinate.
- /// </summary>
- public uint Time;
-
- /// <summary>
- /// Additional information associated with this coordinate.
- /// </summary>
- public IntPtr ExtraInfo;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<MouseMovePoint>();
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains message information from a thread's message queue.
- /// </summary>
- public struct Msg
- {
- /// <summary>
- /// A handle to the window whose window procedure receives the message. This member is
- /// <see cref="System.IntPtr.Zero"/> when the message is a thread message.
- /// </summary>
- public IntPtr HWnd;
-
- /// <summary>
- /// The message identifier. Applications can only use the low word; the high word is reserved by the system.
- /// </summary>
- public WindowMessage Message;
-
- /// <summary>
- /// Additional information about the message.The exact meaning depends on the value of the
- /// <see cref="Message"/> member.
- /// </summary>
- public IntPtr WParam;
-
- /// <summary>
- /// Additional information about the message.The exact meaning depends on the value of the
- /// <see cref="Message"/> member.
- /// </summary>
- public IntPtr LParam;
-
- /// <summary>
- /// The time at which the message was posted.
- /// </summary>
- public uint Time;
-
- /// <summary>
- /// The cursor position, in screen coordinates, when the message was posted.
- /// </summary>
- public Point Point;
-
- /// <inheritdoc/>
- public override string ToString()
- {
- return $"msg=0x{(int)Message:x} ({Message.ToString()}) hwnd=0x{HWnd.ToInt32():x}"
- + $"wparam=0x{WParam.ToInt32():x} lparam=0x{LParam.ToInt32():x} pt={Point}";
- }
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the X and Y coordinates of a point.
- /// </summary>
- public struct Point
- {
- /// <summary>
- /// The X coordinate of this point.
- /// </summary>
- public int X;
-
- /// <summary>
- /// The Y coordinate of this point.
- /// </summary>
- public int Y;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="Point"/> struct with the given X and Y coordinates.
- /// </summary>
- /// <param name="x">The X coordinate.</param>
- /// <param name="y">The Y coordinate.</param>
- public Point(int x, int y)
- {
- X = x;
- Y = y;
- }
-
- /// <summary>
- /// Converts a <see cref="Point"/> structure used for interoperability with the Windows API to a
- /// <see cref="System.Drawing.Point"/>.
- /// </summary>
- /// <param name="point">The OpenTK.NT.Native.Point structure to convert.</param>
- public static implicit operator System.Drawing.Point(Point point)
- {
- return new System.Drawing.Point(point.X, point.Y);
- }
-
- /// <summary>
- /// Converts a <see cref="System.Drawing.Point"/> to a <see cref="Point"/>
- /// structure meant for interoperability with the Windows API.
- /// </summary>
- /// <param name="point">The System.Drawing.Point structure to convert.</param>
- public static implicit operator Point(System.Drawing.Point point) => new Point(point.X, point.Y);
-
- /// <inheritdoc/>
- public override string ToString() => $"{{X={X},Y={Y}}}";
- }
-}
+++ /dev/null
-using System;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// The RawHID structure describes the format of the raw input from a Human Interface Device (HID).
- /// </summary>
- /// <remarks>
- /// Each <see cref="WindowMessage.Input"/> can indicate several inputs, but all of the inputs come from the same
- /// HID. The size of the <see cref="RawData"/> array is <see cref="SizeHid"/> * <see cref="Count"/>.
- /// </remarks>
- public struct RawHid
- {
- /// <summary>
- /// Size, in bytes, of each HID input in bRawData.
- /// </summary>
- public uint SizeHid;
-
- /// <summary>
- /// Number of HID inputs in bRawData.
- /// </summary>
- public uint Count;
-
- /// <summary>
- /// The first byte of the raw input data.
- /// </summary>
- public byte RawData;
-
- /// <summary>
- /// Gets the raw input data as an array of bytes.
- /// </summary>
- /// <returns>An array of raw input data.</returns>
- public unsafe byte[] GetRawData()
- {
- byte[] result = new byte[SizeHid * Count];
-
- fixed (byte* dataPtr = &RawData)
- {
- for (int i = 0; i < result.Length; i++)
- {
- result[i] = *(dataPtr + i);
- }
- }
-
- return result;
- }
-
- /// <summary>
- /// Access the raw input data at a given index.
- /// </summary>
- /// <param name="index">The index at which to access the raw input data.</param>
- /// <returns>A byte of raw input data at the given index.</returns>
- public unsafe byte GetRawDataAt(int index)
- {
- if (index < 0 || index > SizeHid * Count)
- {
- throw new ArgumentOutOfRangeException(nameof(index));
- }
-
- fixed (byte* dataPtr = &RawData)
- {
- return *(dataPtr + index);
- }
- }
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains the raw input from a device.
- /// </summary>
- [StructLayout(LayoutKind.Sequential)]
- public struct RawInput
- {
- /// <summary>
- /// The raw input data.
- /// </summary>
- public RawInputHeader Header;
-
- /// <summary>
- /// Contains device-specific raw input data.
- /// </summary>
- public RawInputData Data;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawInput>();
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// A union containing raw input data from a device.
- /// </summary>
- [StructLayout(LayoutKind.Explicit)]
- public struct RawInputData
- {
- /// <summary>
- /// If the data comes from a mouse, this is the raw input data.
- /// </summary>
- [FieldOffset(0)]
- public RawMouse Mouse;
-
- /// <summary>
- /// If the data comes from a keyboard, this is the raw input data.
- /// </summary>
- [FieldOffset(0)]
- public RawKeyboard Keyboard;
-
- /// <summary>
- /// If the data comes from a HID, this is the raw input data.
- /// </summary>
- [FieldOffset(0)]
- public RawHid Hid;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawInputData>();
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-using OpenToolkit.Input.Hid;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines information for the raw input devices.
- /// </summary>
- public struct RawInputDevice
- {
- /// <summary>
- /// Top level collection Usage page for the raw input device.
- /// </summary>
- public HidPage UsagePage;
-
- /// <summary>
- /// Top level collection Usage for the raw input device.
- /// </summary>
- public ushort Usage;
-
- /// <summary>
- /// Mode flag that specifies how to interpret the information provided by UsagePage and Usage.
- /// By default, the operating system sends raw input from devices with the specified top level collection (TLC)
- /// to the registered application as long as it has the window focus.
- /// </summary>
- public RawInputDeviceFlags Flags;
-
- /// <summary>
- /// Handle to the target window. If NULL it follows the keyboard focus.
- /// </summary>
- public IntPtr Target;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="RawInputDevice"/> struct for generic desktop usage.
- /// </summary>
- /// <param name="usage">HID usage for the Generic Desktop page.</param>
- /// <param name="flags">Specifies how to interpret the raw input data.</param>
- /// <param name="target">Handle to the target window.</param>
- public RawInputDevice(HidGenericDesktopUsage usage, RawInputDeviceFlags flags, IntPtr target)
- : this((ushort)usage, flags, target, HidPage.GenericDesktop)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="RawInputDevice"/> struct for consumer usage.
- /// </summary>
- /// <param name="usage">HID usage for the Consumer page.</param>
- /// <param name="flags">Specifies how to interpret the raw input data.</param>
- /// <param name="target">Handle to the target window.</param>
- public RawInputDevice(HidConsumerUsage usage, RawInputDeviceFlags flags, IntPtr target)
- : this((ushort)usage, flags, target, HidPage.Consumer)
- {
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="RawInputDevice"/> struct for simulation usage.
- /// </summary>
- /// <param name="usage">HID usage for the Simulation page.</param>
- /// <param name="flags">Specifies how to interpret the raw input data.</param>
- /// <param name="target">Handle to the target window.</param>
- public RawInputDevice(HidSimulationUsage usage, RawInputDeviceFlags flags, IntPtr target)
- : this((ushort)usage, flags, target, HidPage.Simulation)
- {
- }
-
- private RawInputDevice(ushort usage, RawInputDeviceFlags flags, IntPtr target, HidPage usagePage)
- {
- Usage = usage;
- Flags = flags;
- Target = target;
- UsagePage = usagePage;
- }
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawInputDevice>();
-
- /// <inheritdoc/>
- public override string ToString() => $"{UsagePage}/{Usage}, flags: {Flags}, window: {Target}";
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the raw input data coming from any device.
- /// </summary>
- [StructLayout(LayoutKind.Explicit)]
- public struct RawInputDeviceInfo
- {
- /// <summary>
- /// Size, in bytes, of the <see cref="RawInputDeviceInfo"/> structure.
- /// </summary>
- [FieldOffset(0)]
- public uint Size;
-
- /// <summary>
- /// Type of raw input data.
- /// </summary>
- [FieldOffset(4)]
- public RawInputDeviceType Type;
-
- /// <summary>
- /// If <see cref="Type"/> is <see cref="RawInputDeviceType.Mouse"/>, this is the
- /// <see cref="RawInputDeviceInfoMouse"/> structure that defines the mouse.
- /// </summary>
- [FieldOffset(8)]
- public RawInputDeviceInfoMouse Mouse;
-
- /// <summary>
- /// If <see cref="Type"/> is <see cref="RawInputDeviceType.Keyboard"/>, this is the
- /// <see cref="RawInputDeviceInfoKeyboard"/> structure that defines the keyboard.
- /// </summary>
- [FieldOffset(8)]
- public RawInputDeviceInfoKeyboard Keyboard;
-
- /// <summary>
- /// If <see cref="Type"/> is <see cref="RawInputDeviceType.Hid"/>, this is the
- /// <see cref="RawInputDeviceInfoHid"/> structure that defines the HID.
- /// </summary>
- [FieldOffset(8)]
- public RawInputDeviceInfoHid Hid;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawInputDeviceInfo>();
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the raw input data coming from the specified Human Interface Device (HID).
- /// </summary>
- public struct RawInputDeviceInfoHid
- {
- /// <summary>
- /// Vendor ID for the HID.
- /// </summary>
- public uint VendorId;
-
- /// <summary>
- /// Product ID for the HID.
- /// </summary>
- public uint ProductId;
-
- /// <summary>
- /// Version number for the HID.
- /// </summary>
- public uint VersionNumber;
-
- /// <summary>
- /// Top-level collection Usage Page for the device.
- /// </summary>
- public ushort UsagePage;
-
- /// <summary>
- /// Top-level collection Usage for the device.
- /// </summary>
- public ushort Usage;
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the raw input data coming from the specified keyboard.
- /// </summary>
- /// <remarks>
- /// For the keyboard, the Usage Page is 1 and the Usage is 6.
- /// </remarks>
- public struct RawInputDeviceInfoKeyboard
- {
- /// <summary>
- /// Type of the keyboard.
- /// </summary>
- public uint Type;
-
- /// <summary>
- /// Subtype of the keyboard.
- /// </summary>
- public uint SubType;
-
- /// <summary>
- /// Scan code mode.
- /// </summary>
- public uint KeyboardMode;
-
- /// <summary>
- /// Number of function keys on the keyboard.
- /// </summary>
- public uint NumberOfFunctionKeys;
-
- /// <summary>
- /// Number of LED indicators on the keyboard.
- /// </summary>
- public uint NumberOfIndicators;
-
- /// <summary>
- /// Total number of keys on the keyboard.
- /// </summary>
- public uint NumberOfKeysTotal;
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the raw input data coming from the specified mouse.
- /// </summary>
- /// <remarks>
- /// For the keyboard, the Usage Page is 1 and the Usage is 2.
- /// </remarks>
- public struct RawInputDeviceInfoMouse
- {
- /// <summary>
- /// ID for the mouse device.
- /// </summary>
- public uint Id;
-
- /// <summary>
- /// Number of buttons for the mouse.
- /// </summary>
- public uint NumberOfButtons;
-
- /// <summary>
- /// Number of data points per second. This information may not be applicable for every mouse device.
- /// </summary>
- public uint SampleRate;
-
- /// <summary>
- /// TRUE if the mouse has a wheel for horizontal scrolling; otherwise, FALSE.
- /// </summary>
- /// <remarks>
- /// This member is only supported under Microsoft Windows Vista and later versions.
- /// </remarks>
- public bool HasHorizontalWheel;
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about a raw input device.
- /// </summary>
- public struct RawInputDeviceList
- {
- /// <summary>
- /// Handle to the raw input device.
- /// </summary>
- public IntPtr Device;
-
- /// <summary>
- /// Type of device.
- /// </summary>
- public RawInputDeviceType Type;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawInputDeviceList>();
-
- /// <inheritdoc/>
- public override string ToString() => $"{Type}, Handle: {Device}";
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains the header information that is part of the raw input data.
- /// </summary>
- public struct RawInputHeader
- {
- /// <summary>
- /// Type of raw input.
- /// </summary>
- public RawInputDeviceType Type;
-
- /// <summary>
- /// The size, in bytes, of the entire input packet of data. This includes <see cref="RawInput"/> plus
- /// possible extra input reports in the <see cref="RawHid"/> variable length array.
- /// </summary>
- public uint Size;
-
- /// <summary>
- /// Handle to the device generating the raw input data.
- /// </summary>
- public IntPtr Device;
-
- /// <summary>
- /// Value passed in the wParam parameter of the <see cref="WindowMessage.Input"/> message.
- /// </summary>
- public IntPtr Param;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawInputHeader>();
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about the state of the keyboard.
- /// </summary>
- public struct RawKeyboard
- {
- /// <summary>
- /// Scan code from the key depression. The scan code for keyboard overrun is KEYBOARD_OVERRUN_MAKE_CODE.
- /// </summary>
- public ushort MakeCode;
-
- /// <summary>
- /// Flags for scan code information.
- /// </summary>
- public RawKeyboardScanCodeFlags Flags;
-
- /// <summary>
- /// Reserved; must be zero.
- /// </summary>
- public ushort Reserved;
-
- /// <summary>
- /// Microsoft Windows message compatible virtual-key code. For more information, see Virtual-Key Codes.
- /// </summary>
- public VirtualKey VKey;
-
- /// <summary>
- /// Corresponding window message, for example <see cref="WindowMessage.KeyDown"/>,
- /// <see cref="WindowMessage.SystemKeyDown"/>, and so forth.
- /// </summary>
- public uint Message;
-
- /// <summary>
- /// Device-specific additional information for the event.
- /// </summary>
- public uint ExtraInformation;
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about the state of the mouse.
- /// </summary>
- [StructLayout(LayoutKind.Explicit)]
- public struct RawMouse
- {
- /// <summary>
- /// Mouse state.
- /// </summary>
- [FieldOffset(0)]
- public RawMouseFlags Flags;
-
- /// <summary>
- /// Reserved. Use <see cref="ButtonFlags"/> instead.
- /// </summary>
- [FieldOffset(4)]
- public uint Buttons;
-
- /// <summary>
- /// The transition state of the mouse buttons.
- /// </summary>
- [FieldOffset(4)]
- public RawMouseButtonFlags ButtonFlags;
-
- /// <summary>
- /// If <see cref="ButtonFlags"/> is <see cref="RawMouseButtonFlags.Wheel"/>,
- /// this member is a signed value that specifies the wheel delta.
- /// </summary>
- [FieldOffset(6)]
- public ushort ButtonData;
-
- /// <summary>
- /// Raw state of the mouse buttons.
- /// </summary>
- [FieldOffset(8)]
- public uint RawButtons;
-
- /// <summary>
- /// Motion in the X direction. This is signed relative motion or absolute motion,
- /// depending on the value of <see cref="Flags"/>.
- /// </summary>
- [FieldOffset(12)]
- public int LastX;
-
- /// <summary>
- /// Motion in the Y direction. This is signed relative motion or absolute motion,
- /// depending on the value of <see cref="Flags"/>.
- /// </summary>
- [FieldOffset(16)]
- public int LastY;
-
- /// <summary>
- /// Device-specific additional information for the event.
- /// </summary>
- [FieldOffset(20)]
- public uint ExtraInformation;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<RawMouse>();
- }
-}
+++ /dev/null
-using System;
-using System.Drawing;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Defines the coordinates of the upper-left and lower-right corners of a rectangle.
- /// </summary>
- /// <remarks>
- /// By convention, the right and bottom edges of the rectangle are normally considered exclusive. In other words,
- /// the pixel whose coordinates are (right, bottom) lies immediately outside of the the rectangle. For example,
- /// when <see cref="Rect"/> is passed to the FillRect function, the rectangle is filled up to, but not including,
- /// the right column and bottom row of pixels.
- /// </remarks>
- public struct Rect
- {
- /// <summary>
- /// Specifies the x-coordinate of the upper-left corner of the rectangle.
- /// </summary>
- public int Left;
-
- /// <summary>
- /// Specifies the y-coordinate of the upper-left corner of the rectangle.
- /// </summary>
- public int Top;
-
- /// <summary>
- /// Specifies the x-coordinate of the lower-right corner of the rectangle.
- /// </summary>
- public int Right;
-
- /// <summary>
- /// Specifies the y-coordinate of the lower-right corner of the rectangle.
- /// </summary>
- public int Bottom;
-
- /// <summary>
- /// Gets the width of the rectangle.
- /// </summary>
- public int Width => Right - Left;
-
- /// <summary>
- /// Gets the height of the rectangle.
- /// </summary>
- public int Height => Bottom - Top;
-
- /// <inheritdoc/>
- public override string ToString() => $"{{X={Left},Y={Top},Width={Width},Height={Height}}}";
-
- /// <summary>
- /// Implicitly converts a <see cref="Rect"/> structure into a <see cref="Rectangle"/> structure.
- /// </summary>
- /// <param name="value">A <see cref="Rectangle"/> with the same values as the given <see cref="Rect"/>.</param>
- public static implicit operator Rectangle(Rect value)
- {
- return Rectangle.FromLTRB(value.Left, value.Top, value.Right, value.Bottom);
- }
-
- /// <summary>
- /// Implicitly converts a <see cref="Rectangle"/> structure into a <see cref="Rect"/> structure.
- /// </summary>
- /// <param name="value">A <see cref="Rect"/> with the same values as the given <see cref="Rectangle"/>.</param>
- public static implicit operator Rect(Rectangle value)
- {
- return new Rect
- {
- Left = value.Left,
- Right = value.Right,
- Top = value.Top,
- Bottom = value.Bottom
- };
- }
-
- /// <summary>
- /// Creates a <see cref="Rect"/> structure with the specified Size at location (0,0).
- /// </summary>
- /// <param name="value">The size from which to construct the new <see cref="Rect"/> structure.</param>
- /// <returns>A <see cref="Rect"/> structure with the given size.</returns>
- public static Rect FromSize(Size value)
- {
- return new Rect
- {
- Left = 0,
- Right = value.Width,
- Top = 0,
- Bottom = value.Height
- };
- }
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct PAINTSTRUCT
- {
- public IntPtr hdc;
- public bool fErase;
- public Rect rcPaint;
- public bool fRestore;
- public bool fIncUpdate;
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public byte[] rgbReserved;
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains the styles for a window.<para/>
- /// Both members can be <see cref="WindowStyles"/> or <see cref="ExtendedWindowStyles"/>.
- /// </summary>
- public struct StyleStruct
- {
- /// <summary>
- /// The previous styles for a window.
- /// </summary>
- public uint StyleOld;
-
- /// <summary>
- /// The new styles for a window.
- /// </summary>
- public uint StyleNew;
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Used by the <see cref="User32.Mouse.TrackMouseEvent(ref TrackMouseEvent)"/> function to track
- /// when the mouse pointer leaves a window or hovers over a window for a specified amount of time.
- /// </summary>
- public struct TrackMouseEvent
- {
- /// <summary>
- /// Set <see cref="HoverTime"/> to this value to use the system default hover time-out.
- /// </summary>
- public const uint DefaultHoverTime = 0xFFFFFFFF;
-
- /// <summary>
- /// The size of the <see cref="TrackMouseEvent"/> structure, in bytes.<para/>
- /// Set this to <see cref="SizeInBytes"/>.
- /// </summary>
- public uint Size;
-
- /// <summary>
- /// The services requested.
- /// </summary>
- public TrackMouseEvents Flags;
-
- /// <summary>
- /// A handle to the window to track.
- /// </summary>
- public IntPtr TrackWindowHandle;
-
- /// <summary>
- /// The hover time-out (if <see cref="TrackMouseEvents.Hover"/> was specified in <see cref="Flags"/>), in
- /// milliseconds. Can be <see cref="DefaultHoverTime"/>, which means to use the system default hover time-out.
- /// </summary>
- public uint HoverTime;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<TrackMouseEvent>();
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains the window class attributes that are registered by the RegisterClass function.
- /// </summary>
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public struct WindowClass
- {
- /// <summary>
- /// The class style(s). This member can be any combination of <see cref="WindowClassStyles"/>.
- /// </summary>
- public WindowClassStyles Style;
-
- /// <summary>
- /// A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure.
- /// </summary>
- public WindowProc WindowProc;
-
- /// <summary>
- /// The number of extra bytes to allocate following the window-class structure.
- /// The system initializes the bytes to zero.
- /// </summary>
- public int ClassExtra;
-
- /// <summary>
- /// The number of extra bytes to allocate following the window instance. The system initializes the bytes
- /// to zero. If an application uses <see cref="WindowClass"/> to register a dialog box created by
- /// using the CLASS directive in the resource file, it must set this member to DLGWINDOWEXTRA.
- /// </summary>
- public int WindowExtra;
-
- /// <summary>
- /// A handle to the instance that contains the window procedure for the class.
- /// </summary>
- public IntPtr Instance;
-
- /// <summary>
- /// A handle to the class icon. This member must be a handle to an icon resource.
- /// If this member is <see cref="IntPtr.Zero"/>, the system provides a default icon.
- /// </summary>
- public IntPtr Icon;
-
- /// <summary>
- /// A handle to the class cursor. This member must be a handle to a cursor resource.
- /// If this member is <see cref="IntPtr.Zero"/>, an application must explicitly set the cursor shape
- /// whenever the mouse moves into the application's window.
- /// </summary>
- public IntPtr Cursor;
-
- /// <summary>
- /// A handle to the class background brush. This member can be a handle to the brush to be used for
- /// painting the background, or it can be a color value.<para/>
- /// For more information on setting this to a color value, check the official documentation.
- /// </summary>
- public IntPtr Background;
-
- /// <summary>
- /// Pointer to a string that specifies the resource name of the class menu, as the name appears in the
- /// resource file. If this member is null, windows belonging to this class have no default menu.
- /// </summary>
- public string MenuName;
-
- /// <summary>
- /// A string specifying the window class name. The class name can be any name registered with
- /// RegisterClass or <see cref="User32.WindowClass.RegisterClassEx(ref ExtendedWindowClass)"/>,
- /// or any of the predefined control-class names.
- /// </summary>
- public string ClassName;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<WindowClass>();
- }
-}
+++ /dev/null
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains window information.
- /// </summary>
- public struct WindowInfo
- {
- /// <summary>
- /// The size of the structure, in bytes.
- /// </summary>
- public uint Size;
-
- /// <summary>
- /// Pointer to a RECT structure that specifies the coordinates of the window.
- /// </summary>
- public Rect Window;
-
- /// <summary>
- /// Pointer to a RECT structure that specifies the coordinates of the client area.
- /// </summary>
- public Rect Client;
-
- /// <summary>
- /// The window styles. For a table of window styles, see CreateWindowEx.
- /// </summary>
- public WindowStyles Style;
-
- /// <summary>
- /// The extended window styles. For a table of extended window styles, see CreateWindowEx.
- /// </summary>
- public ExtendedWindowStyles ExtendedStyle;
-
- /// <summary>
- /// The window status. If this member is WS_ACTIVECAPTION, the window is active.
- /// Otherwise, this member is zero.
- /// </summary>
- public uint WindowStatus;
-
- /// <summary>
- /// The width of the window border, in pixels.
- /// </summary>
- public uint WindowBordersX;
-
- /// <summary>
- /// The height of the window border, in pixels.
- /// </summary>
- public uint WindowBordersY;
-
- /// <summary>
- /// The window class atom (see RegisterClass).
- /// </summary>
- public ushort WindowType;
-
- /// <summary>
- /// The Microsoft Windows version of the application that created the window.
- /// </summary>
- public ushort CreatorVersion;
-
- /// <summary>
- /// The size of this structure in bytes.
- /// </summary>
- public static readonly uint SizeInBytes = (uint)Marshal.SizeOf<WindowInfo>();
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Contains information about the size and position of a window.
- /// </summary>
- [StructLayout(LayoutKind.Sequential)]
- public struct WindowPosition
- {
- /// <summary>
- /// Handle to the window.
- /// </summary>
- public IntPtr HWnd;
-
- /// <summary>
- /// Specifies the position of the window in Z order (front-to-back position).
- /// This member can be a handle to the window behind which this window is placed,
- /// or can be one of the special values listed with the SetWindowPos function.
- /// </summary>
- public IntPtr HWndInsertAfter;
-
- /// <summary>
- /// Specifies the position of the left edge of the window.
- /// </summary>
- public int X;
-
- /// <summary>
- /// Specifies the position of the top edge of the window.
- /// </summary>
- public int Y;
-
- /// <summary>
- /// Specifies the window width, in pixels.
- /// </summary>
- public int Width;
-
- /// <summary>
- /// Specifies the window height, in pixels.
- /// </summary>
- public int Height;
-
- /// <summary>
- /// Specifies the window position.
- /// </summary>
- public SetWindowPosFlags Flags;
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with timers.
- /// </summary>
- public static class Timer
- {
- /// <summary>
- /// Creates a timer with the specified time-out value.
- /// </summary>
- /// <param name="window">
- /// A handle to the window to be associated with the timer. This window must be owned
- /// by the calling thread. If a <see cref="IntPtr.Zero"/> value for <paramref name="window"/> is passed
- /// in along with an <paramref name="timerID"/> of an existing timer, that timer will be replaced in the
- /// same way that an existing non-zero <paramref name="window"/> timer will be.
- /// </param>
- /// <param name="timerID">
- /// A nonzero timer identifier. If the <paramref name="window"/> parameter is <see cref="IntPtr.Zero"/>,
- /// and the <paramref name="timerID"/> does not match an existing timer then it is ignored and a new
- /// timer ID is generated.<para/>
- /// If the <paramref name="window"/> parameter is not <see cref="IntPtr.Zero"/>
- /// and the window specified by <paramref name="window"/> already has a timer with the value
- /// <paramref name="timerID"/>, then the existing timer is replaced by the new timer. When
- /// <see cref="SetTimer(IntPtr, UIntPtr, uint, TimerProc)"/> replaces a timer, the timer is reset.
- /// Therefore, a message will be sent after the current time-out value elapses, but the previously set
- /// time-out value is ignored.<para/>
- /// If the call is not intended to replace an existing timer,
- /// <paramref name="timerID"/> should be 0 if the <paramref name="window"/> is <see cref="IntPtr.Zero"/>.
- /// </param>
- /// <param name="elapse">The time-out value, in milliseconds.</param>
- /// <param name="timerFunc">
- /// A pointer to the function to be notified when the time-out value elapses. For more information about
- /// the function, see <see cref="TimerProc"/>. If <paramref name="timerFunc"/> is null, the system posts
- /// a <see cref="WindowMessage.Timer"/> message to the application queue. The <see cref="Msg.HWnd"/>
- /// member of the message's <see cref="Msg"/> structure contains
- /// the value of the <paramref name="window"/> parameter.
- /// </param>
- /// <returns>
- /// If the function succeeds and the <paramref name="window"/> parameter is <see cref="IntPtr.Zero"/>,
- /// the return value is an integer identifying the new timer. An application can pass this value to the
- /// <see cref="KillTimer(IntPtr, UIntPtr)"/> function to destroy the timer.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern UIntPtr SetTimer
- (
- [In] [Optional] IntPtr window,
- [In] UIntPtr timerID,
- [In] uint elapse,
- [In] [Optional] TimerProc timerFunc
- );
-
- /// <summary>
- /// Destroys the specified timer.
- /// </summary>
- /// <param name="window">
- /// A handle to the window associated with the specified timer. This value must be the same as the window
- /// value passed to the <see cref="SetTimer(IntPtr, UIntPtr, uint, TimerProc)"/>
- /// function that created the timer.
- /// </param>
- /// <param name="timerID">
- /// The timer to be destroyed. If the window handle passed to
- /// <see cref="SetTimer(IntPtr, UIntPtr, uint, TimerProc)"/> is valid, this parameter must be the same as
- /// the timerID value passed to <see cref="SetTimer(IntPtr, UIntPtr, uint, TimerProc)"/>. If the application
- /// calls <see cref="SetTimer(IntPtr, UIntPtr, uint, TimerProc)"/> with window set to
- /// <see cref="IntPtr.Zero"/>, this parameter must be the timer identifier returned by
- /// <see cref="SetTimer(IntPtr, UIntPtr, uint, TimerProc)"/>.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool KillTimer
- (
- [In] [Optional] IntPtr window,
- [In] UIntPtr timerID
- );
- }
- }
-}
+++ /dev/null
-namespace OpenToolkit.NT.Native
-{
- /// <summary>
- /// Provides a subset of functions from the Windows API, specifically those that are imported from user32.dll.
- /// </summary>
- public static partial class User32
- {
- /// <summary>
- /// The filename of the dynamic link library (DLL) that contains these functions.
- /// </summary>
- public const string Library = "user32.dll";
- }
-}
+++ /dev/null
-using System;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Text;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with windows.
- /// </summary>
- public static class Window
- {
- /// <summary>
- /// Calculates the required size of the window rectangle, based on the desired client-rectangle size.
- /// The window rectangle can then be passed to the CreateWindow function to create a window whose
- /// client area is the desired size.
- /// </summary>
- /// <param name="rect">
- /// A pointer to a <see cref="Rect"/> structure that contains the coordinates of the top-left and
- /// bottom-right corners of the desired client area. When the function returns, the structure contains
- /// the coordinates of the top-left and bottom-right corners of the window to accommodate the desired
- /// client area.
- /// </param>
- /// <param name="style">
- /// The window style of the window whose required size is to be calculated.
- /// Note that you cannot specify the <see cref="WindowStyles.Overlapped"/> style.
- /// </param>
- /// <param name="hasMenu">Indicates whether the window has a menu.</param>
- /// <returns>
- /// If the function succeeds, the return value is nonzero.
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool AdjustWindowRect
- (
- [In] [Out] ref Rect rect,
- [In] WindowStyles style,
- [In] bool hasMenu
- );
-
- /// <summary>
- /// Calculates the required size of the window rectangle, based on the desired client-rectangle size.
- /// The window rectangle can then be passed to the
- /// <see cref="CreateWindowEx(ExtendedWindowStyles, string, string, WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/>
- /// function to create a window whose client area is the desired size.
- /// </summary>
- /// <param name="rect">
- /// A pointer to a <see cref="Rect"/> structure that contains the coordinates of the top-left and
- /// bottom-right corners of the desired client area. When the function returns, the structure contains
- /// the coordinates of the top-left and bottom-right corners of the window to accommodate the
- /// desired client area.
- /// </param>
- /// <param name="style">
- /// The window style of the window whose required size is to be calculated.
- /// Note that you cannot specify the <see cref="WindowStyles.Overlapped"/> style.
- /// </param>
- /// <param name="hasMenu">Indicates whether the window has a menu.</param>
- /// <param name="extendedStyle">
- /// The extended window style of the window whose required size is to be calculated.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is nonzero.
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool AdjustWindowRectEx
- (
- [In] [Out] ref Rect rect,
- [In] WindowStyles style,
- [In] bool hasMenu,
- [In] ExtendedWindowStyles extendedStyle
- );
-
- /// <summary>
- /// A constant that can be used in all CreateWindowEx overloads to specify special behavior.<para/>
- /// For more information, see any CreateWindowEx overload.
- /// </summary>
- public const int UseDefault = unchecked((int)0x80000000);
-
- /// <summary>
- /// Creates an overlapped, pop-up, or child window with an extended window style; otherwise,
- /// this function is identical to the CreateWindow function.
- /// </summary>
- /// <param name="extendedStyle">The extended window style of the window being created.</param>
- /// <param name="className">A string specifying the window class name.</param>
- /// <param name="windowName">
- /// The window name. If the window style specifies a title bar,
- /// the window title pointed to by <paramref name="windowName"/> is displayed in the title bar.
- /// </param>
- /// <param name="style">The style of the window being created.</param>
- /// <param name="x">
- /// The initial horizontal position of the window. For an overlapped or pop-up window, the x parameter is
- /// the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window,
- /// x is the x-coordinate of the upper-left corner of the window relative to the upper-left corner
- /// of the parent window's client area.<para/>
- /// If x is set to <see cref="int.MinValue"/>, the system selects the default position for the window's
- /// upper-left corner and ignores the y parameter. <see cref="int.MinValue"/> is valid only for overlapped
- /// windows; if it is specified for a pop-up or child window, the x and y parameters are set to zero.
- /// </param>
- /// <param name="y">
- /// The initial vertical position of the window. For an overlapped or pop-up window, the y parameter is
- /// the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window,
- /// y is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left
- /// corner of the parent window's client area. For a list box y is the initial y-coordinate of the
- /// upper-left corner of the list box's client area relative to the upper-left corner of the parent
- /// window's client area.<para/>
- /// If an overlapped window is created with the <see cref="WindowStyles.Visible"/> style bit set and
- /// the x parameter is set to <see cref="int.MinValue"/>, then the y parameter determines how the window
- /// is shown. If the y parameter is <see cref="int.MinValue"/>, then the window manager calls
- /// <see cref="ShowWindow(IntPtr, ShowWindowCommand)"/> with the <see cref="ShowWindowCommand.Show"/>
- /// flag after the window has been created. If the y parameter is some other value, then the window manager
- /// calls <see cref="ShowWindow(IntPtr, ShowWindowCommand)"/> with that value as the nCmdShow parameter.
- /// </param>
- /// <param name="width">
- /// The width, in device units, of the window. For overlapped windows, nWidth is the window's width, in
- /// screen coordinates, or <see cref="UseDefault"/>.<para/>
- /// If nWidth is <see cref="UseDefault"/>, the system selects a default width and height for the window;
- /// the default width extends from the initial x-coordinates to the right edge of the screen; the default
- /// height extends from the initial y-coordinate to the top of the icon area.<para/>
- /// <see cref="UseDefault"/> is valid only for overlapped windows; if <see cref="UseDefault"/> is
- /// specified for a pop-up or child window, the <paramref name="width"/> and <paramref name="height"/>
- /// parameter are set to zero.
- /// </param>
- /// <param name="height">
- /// The height, in device units, of the window. For overlapped windows, <paramref name="height"/> is the
- /// window's height, in screen coordinates.<para/>
- /// If the <paramref name="width"/> parameter is set to <see cref="UseDefault"/>,
- /// the system ignores <paramref name="height"/>.
- /// </param>
- /// <param name="parentWindow">
- /// A handle to the parent or owner window of the window being created. To create a child window or an
- /// owned window, supply a valid window handle. This parameter is optional for pop-up windows.<para/>
- /// </param>
- /// <param name="menu">
- /// A handle to a menu, or specifies a child-window identifier, depending on the window style.<para/>
- /// For an overlapped or pop-up window, <paramref name="menu"/> identifies the menu to be used with the
- /// window; it can be <see cref="IntPtr.Zero"/> if the class menu is to be used.<para/>
- /// For a child window, <paramref name="menu"/> specifies the child-window identifier, an integer value
- /// used by a dialog box control to notify its parent about events. The application determines the
- /// child-window identifier; it must be unique for all child windows with the same parent window.
- /// </param>
- /// <param name="moduleInstance">
- /// A handle to the instance of the module to be associated with the window.
- /// </param>
- /// <param name="createParam">
- /// Pointer to a value to be passed to the window through the <see cref="CreateStruct"/> structure
- /// (<see cref="CreateStruct.CreateParams"/> member) pointed to by the lParam param of the
- /// <see cref="WindowMessage.Create"/> message.<para/>
- /// This message is sent to the created window by this function before it returns.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the new window.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern IntPtr CreateWindowEx
- (
- [In] ExtendedWindowStyles extendedStyle,
- [In] [Optional] string className,
- [In] [Optional] string windowName,
- [In] WindowStyles style,
- [In] int x,
- [In] int y,
- [In] int width,
- [In] int height,
- [In] [Optional] IntPtr parentWindow,
- [In] [Optional] IntPtr menu,
- [In] [Optional] IntPtr moduleInstance,
- [In] [Optional] IntPtr createParam
- );
-
- /// <summary>
- /// Creates an overlapped, pop-up, or child window with an extended window style; otherwise,
- /// this function is identical to the CreateWindow function.
- /// </summary>
- /// <param name="extendedStyle">The extended window style of the window being created.</param>
- /// <param name="className">A pointer to a string specifying the window class name.</param>
- /// <param name="windowName">
- /// The window name. If the window style specifies a title bar,
- /// the window title pointed to by <paramref name="windowName"/> is displayed in the title bar.
- /// </param>
- /// <param name="style">The style of the window being created.</param>
- /// <param name="x">
- /// The initial horizontal position of the window. For an overlapped or pop-up window, the x parameter is
- /// the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window,
- /// x is the x-coordinate of the upper-left corner of the window relative to the upper-left corner
- /// of the parent window's client area.<para/>
- /// If x is set to <see cref="int.MinValue"/>, the system selects the default position for the window's
- /// upper-left corner and ignores the y parameter. <see cref="int.MinValue"/> is valid only for overlapped
- /// windows; if it is specified for a pop-up or child window, the x and y parameters are set to zero.
- /// </param>
- /// <param name="y">
- /// The initial vertical position of the window. For an overlapped or pop-up window, the y parameter is
- /// the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window,
- /// y is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left
- /// corner of the parent window's client area. For a list box y is the initial y-coordinate of the
- /// upper-left corner of the list box's client area relative to the upper-left corner of the parent
- /// window's client area.<para/>
- /// If an overlapped window is created with the <see cref="WindowStyles.Visible"/> style bit set and
- /// the x parameter is set to <see cref="int.MinValue"/>, then the y parameter determines how the window
- /// is shown. If the y parameter is <see cref="int.MinValue"/>, then the window manager calls
- /// <see cref="ShowWindow(IntPtr, ShowWindowCommand)"/> with the <see cref="ShowWindowCommand.Show"/>
- /// flag after the window has been created. If the y parameter is some other value, then the window manager
- /// calls <see cref="ShowWindow(IntPtr, ShowWindowCommand)"/> with that value as the nCmdShow parameter.
- /// </param>
- /// <param name="width">
- /// The width, in device units, of the window. For overlapped windows, nWidth is the window's width, in
- /// screen coordinates, or <see cref="UseDefault"/>.<para/>
- /// If nWidth is <see cref="UseDefault"/>, the system selects a default width and height for the window;
- /// the default width extends from the initial x-coordinates to the right edge of the screen; the default
- /// height extends from the initial y-coordinate to the top of the icon area.<para/>
- /// <see cref="UseDefault"/> is valid only for overlapped windows; if <see cref="UseDefault"/> is
- /// specified for a pop-up or child window, the <paramref name="width"/> and <paramref name="height"/>
- /// parameter are set to zero.
- /// </param>
- /// <param name="height">
- /// The height, in device units, of the window. For overlapped windows, <paramref name="height"/> is the
- /// window's height, in screen coordinates.<para/>
- /// If the <paramref name="width"/> parameter is set to <see cref="UseDefault"/>,
- /// the system ignores <paramref name="height"/>.
- /// </param>
- /// <param name="parentWindow">
- /// A handle to the parent or owner window of the window being created. To create a child window or an
- /// owned window, supply a valid window handle. This parameter is optional for pop-up windows.<para/>
- /// </param>
- /// <param name="menu">
- /// A handle to a menu, or specifies a child-window identifier, depending on the window style.<para/>
- /// For an overlapped or pop-up window, <paramref name="menu"/> identifies the menu to be used with the
- /// window; it can be <see cref="IntPtr.Zero"/> if the class menu is to be used.<para/>
- /// For a child window, <paramref name="menu"/> specifies the child-window identifier, an integer value
- /// used by a dialog box control to notify its parent about events. The application determines the
- /// child-window identifier; it must be unique for all child windows with the same parent window.
- /// </param>
- /// <param name="moduleInstance">
- /// A handle to the instance of the module to be associated with the window.
- /// </param>
- /// <param name="createParam">
- /// Pointer to a value to be passed to the window through the <see cref="CreateStruct"/> structure
- /// (<see cref="CreateStruct.CreateParams"/> member) pointed to by the lParam param of the
- /// <see cref="WindowMessage.Create"/> message.<para/>
- /// This message is sent to the created window by this function before it returns.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the new window.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern IntPtr CreateWindowEx
- (
- [In] ExtendedWindowStyles extendedStyle,
- [In] [Optional] IntPtr className,
- [In] [Optional] string windowName,
- [In] WindowStyles style,
- [In] int x,
- [In] int y,
- [In] int width,
- [In] int height,
- [In] [Optional] IntPtr parentWindow,
- [In] [Optional] IntPtr menu,
- [In] [Optional] IntPtr moduleInstance,
- [In] [Optional] IntPtr createParam
- );
-
- /// <summary>
- /// Creates an overlapped, pop-up, or child window with an extended window style; otherwise,
- /// this function is identical to the CreateWindow function.
- /// </summary>
- /// <param name="extendedStyle">The extended window style of the window being created.</param>
- /// <param name="classAtom">
- /// A class atom created by a previous call to RegisterClass or
- /// <see cref="WindowClass.RegisterClassEx(ref ExtendedWindowClass)"/>.
- /// </param>
- /// <param name="windowName">
- /// The window name. If the window style specifies a title bar,
- /// the window title pointed to by <paramref name="windowName"/> is displayed in the title bar.
- /// </param>
- /// <param name="style">The style of the window being created.</param>
- /// <param name="x">
- /// The initial horizontal position of the window. For an overlapped or pop-up window, the x parameter is
- /// the initial x-coordinate of the window's upper-left corner, in screen coordinates. For a child window,
- /// x is the x-coordinate of the upper-left corner of the window relative to the upper-left corner
- /// of the parent window's client area.<para/>
- /// If x is set to <see cref="int.MinValue"/>, the system selects the default position for the window's
- /// upper-left corner and ignores the y parameter. <see cref="int.MinValue"/> is valid only for overlapped
- /// windows; if it is specified for a pop-up or child window, the x and y parameters are set to zero.
- /// </param>
- /// <param name="y">
- /// The initial vertical position of the window. For an overlapped or pop-up window, the y parameter is
- /// the initial y-coordinate of the window's upper-left corner, in screen coordinates. For a child window,
- /// y is the initial y-coordinate of the upper-left corner of the child window relative to the upper-left
- /// corner of the parent window's client area. For a list box y is the initial y-coordinate of the
- /// upper-left corner of the list box's client area relative to the upper-left corner of the parent
- /// window's client area.<para/>
- /// If an overlapped window is created with the <see cref="WindowStyles.Visible"/> style bit set and
- /// the x parameter is set to <see cref="int.MinValue"/>, then the y parameter determines how the window
- /// is shown. If the y parameter is <see cref="int.MinValue"/>, then the window manager calls
- /// <see cref="ShowWindow(IntPtr, ShowWindowCommand)"/> with the <see cref="ShowWindowCommand.Show"/>
- /// flag after the window has been created. If the y parameter is some other value, then the window manager
- /// calls <see cref="ShowWindow(IntPtr, ShowWindowCommand)"/> with that value as the nCmdShow parameter.
- /// </param>
- /// <param name="width">
- /// The width, in device units, of the window. For overlapped windows, nWidth is the window's width, in
- /// screen coordinates, or <see cref="UseDefault"/>.<para/>
- /// If nWidth is <see cref="UseDefault"/>, the system selects a default width and height for the window;
- /// the default width extends from the initial x-coordinates to the right edge of the screen; the default
- /// height extends from the initial y-coordinate to the top of the icon area.<para/>
- /// <see cref="UseDefault"/> is valid only for overlapped windows; if <see cref="UseDefault"/> is
- /// specified for a pop-up or child window, the <paramref name="width"/> and <paramref name="height"/>
- /// parameter are set to zero.
- /// </param>
- /// <param name="height">
- /// The height, in device units, of the window. For overlapped windows, <paramref name="height"/> is the
- /// window's height, in screen coordinates.<para/>
- /// If the <paramref name="width"/> parameter is set to <see cref="UseDefault"/>,
- /// the system ignores <paramref name="height"/>.
- /// </param>
- /// <param name="parentWindow">
- /// A handle to the parent or owner window of the window being created. To create a child window or an
- /// owned window, supply a valid window handle. This parameter is optional for pop-up windows.<para/>
- /// </param>
- /// <param name="menu">
- /// A handle to a menu, or specifies a child-window identifier, depending on the window style.<para/>
- /// For an overlapped or pop-up window, <paramref name="menu"/> identifies the menu to be used with the
- /// window; it can be <see cref="IntPtr.Zero"/> if the class menu is to be used.<para/>
- /// For a child window, <paramref name="menu"/> specifies the child-window identifier, an integer value
- /// used by a dialog box control to notify its parent about events. The application determines the
- /// child-window identifier; it must be unique for all child windows with the same parent window.
- /// </param>
- /// <param name="moduleInstance">
- /// A handle to the instance of the module to be associated with the window.
- /// </param>
- /// <param name="createParam">
- /// Pointer to a value to be passed to the window through the <see cref="CreateStruct"/> structure
- /// (<see cref="CreateStruct.CreateParams"/> member) pointed to by the lParam param of the
- /// <see cref="WindowMessage.Create"/> message.<para/>
- /// This message is sent to the created window by this function before it returns.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the new window.
- /// If the function fails, the return value is <see cref="IntPtr.Zero"/>.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static IntPtr CreateWindowEx
- (
- [In] ExtendedWindowStyles extendedStyle,
- [In] [Optional] ushort classAtom,
- [In] [Optional] string windowName,
- [In] WindowStyles style,
- [In] int x,
- [In] int y,
- [In] int width,
- [In] int height,
- [In] [Optional] IntPtr parentWindow,
- [In] [Optional] IntPtr menu,
- [In] [Optional] IntPtr moduleInstance,
- [In] [Optional] IntPtr createParam
- )
- {
- return CreateWindowEx
- (
- extendedStyle,
- new IntPtr(classAtom),
- windowName,
- style,
- x,
- y,
- width,
- height,
- parentWindow,
- menu,
- moduleInstance,
- createParam
- );
- }
-
- /// <summary>
- /// Destroys the specified window. The function sends <see cref="WindowMessage.Destroy"/>
- /// and <see cref="WindowMessage.NCDestroy"/> messages to the window to deactivate it and remove the
- /// keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue,
- /// destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain
- /// (if the window is at the top of the viewer chain).<para/>
- /// If the specified window is a parent or owner window, <see cref="DestroyWindow(IntPtr)"/> automatically
- /// destroys the associated child or owned windows when it destroys the parent or owner window. The
- /// function first destroys child or owned windows, and then it destroys the parent or owner window.
- /// </summary>
- /// <param name="window">A handle to the window to be destroyed.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DestroyWindow([In] IntPtr window);
-
- /// <summary>
- /// Passes message information to the specified window procedure.
- /// </summary>
- /// <param name="previousWindowFunc">
- /// The previous window procedure. If this value is obtained by calling the
- /// <see cref="GetWindowLong(IntPtr, GetWindowLongIndex)"/> function with the index parameter set to
- /// <see cref="GetWindowLongIndex.WindowProcedure"/> or DWL_DLGPROC, it is actually either the address of
- /// a window or dialog box procedure, or a special internal value meaningful only to
- /// <see cref="CallWindowProc(IntPtr, IntPtr, WindowMessage, IntPtr, IntPtr)"/>.
- /// </param>
- /// <param name="window">A handle to the window procedure to receive the message.</param>
- /// <param name="msg">The message.</param>
- /// <param name="wparam">
- /// Additional message-specific information.
- /// The contents of this parameter depend on the value of the <paramref name="msg"/> parameter.
- /// </param>
- /// <param name="lparam">
- /// Additional message-specific information.
- /// The contents of this parameter depend on the value of the <paramref name="msg"/> parameter.
- /// </param>
- /// <returns>
- /// The return value specifies the result of the message processing and depends on the message sent.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- public static extern IntPtr CallWindowProc
- (
- [In] IntPtr previousWindowFunc,
- [In] IntPtr window,
- [In] WindowMessage msg,
- [In] IntPtr wparam,
- [In] IntPtr lparam
- );
-
- /// <summary>
- /// Sets the current process as dots per inch (dpi) aware. Note: <see cref="SetProcessDPIAware"/> is
- /// subject to a possible race condition if a DLL caches dpi settings during initialization.
- /// For this reason, it is recommended that dpi-aware be set through the application (.exe) manifest
- /// rather than by calling <see cref="SetProcessDPIAware"/>.
- /// </summary>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// Otherwise, the return value is false.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetProcessDPIAware();
-
- /// <summary>
- /// Changes the window procedure of the specified window.
- /// </summary>
- /// <param name="window">
- /// A handle to the window and, indirectly, the class to which the window belongs.
- /// </param>
- /// <param name="newProc">The replacement window procedure.</param>
- /// <returns>
- /// If the function succeeds, the return value is the previous value
- /// of the specified 32-bit integer.<para/>
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static IntPtr SetWindowLong(IntPtr window, WindowProc newProc)
- {
- return SetWindowLong
- (
- window,
- GetWindowLongIndex.WindowProcedure,
- Marshal.GetFunctionPointerForDelegate(newProc)
- );
- }
-
- /// <summary>
- /// Changes an attribute of the specified window.
- /// The function also sets a value at the specified offset in the extra window memory.
- /// </summary>
- /// <param name="window">
- /// A handle to the window and, indirectly, the class to which the window belongs.
- /// </param>
- /// <param name="index">
- /// One of the pre-defined values specifying the offset to the value to be set.
- /// </param>
- /// <param name="newLong">The replacement value.</param>
- /// <returns>
- /// If the function succeeds, the return value is the previous value of the
- /// specified 32-bit integer.<para/>
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static IntPtr SetWindowLong(IntPtr window, GetWindowLongIndex index, IntPtr newLong)
- {
- return SetWindowLong(window, (int)index, newLong);
- }
-
- /// <summary>
- /// Changes an attribute of the specified window. The function also sets a value at the specified offset
- /// in the extra window memory.
- /// </summary>
- /// <param name="window">
- /// A handle to the window and, indirectly, the class to which the window belongs.
- /// </param>
- /// <param name="index">
- /// The zero-based offset to the value to be set. Valid values are in the range zero through the number
- /// of bytes of extra window memory, minus the size of an <see cref="IntPtr"/>.
- /// </param>
- /// <param name="newLong">The replacement value.</param>
- /// <returns>
- /// If the function succeeds, the return value is the previous value of the
- /// specified 32-bit integer.<para/>
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- /// <remarks>
- /// This method is a wrapper around both the SetWindowLong (32-bit) and the SetWindowLongPtr (64-bit)
- /// version of these functions.<para/>
- /// This method will always call the "correct" function for this machine,
- /// and return the value wrapped in an <see cref="IntPtr"/>.
- /// This method will throw a <see cref="Win32Exception"/> if the Windows API function returns a value
- /// that indicates failure.
- /// </remarks>
- /// <exception cref="Win32Exception">An error occurs in the native function call.</exception>
- public static IntPtr SetWindowLong(IntPtr window, int index, IntPtr newLong)
- {
- //Kernel32.SetLastError(0);
-
- IntPtr result;
- if (IntPtr.Size == 8)
- {
- result = SetWindowLongPtr(window, index, newLong);
- }
- else
- {
- result = new IntPtr(SetWindowLong(window, index, newLong.ToInt32()));
- }
-
- int error;
- if (result == IntPtr.Zero && (error = Marshal.GetLastWin32Error()) != 0)
- {
- throw new Win32Exception(error, "Failed to modify window border.");
- }
-
- return result;
- }
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- private static extern int SetWindowLong
- (
- [In] IntPtr window,
- [In] int index,
- [In] int newLong
- );
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- private static extern IntPtr SetWindowLongPtr
- (
- [In] IntPtr window,
- [In] int index,
- [In] IntPtr newLong
- );
-
- /// <summary>
- /// Retrieves information about the specified window. The function also retrieves the value at a
- /// specified offset into the extra window memory.
- /// </summary>
- /// <param name="window">
- /// A handle to the window and, indirectly, the class to which the window belongs.
- /// </param>
- /// <param name="index">
- /// One of the pre-defined values specifying the offset to the value to be retrieved.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is the requested value.<para/>
- /// If the function fails, the return value is zero. To get extended error information, call
- /// <see cref="Marshal.GetLastWin32Error"/>.<para/>
- /// If SetWindowLong or SetWindowLongPtr has not been called previously,
- /// GetWindowLongPtr returns zero for values in the extra window or class memory.
- /// </returns>
- /// <remarks>
- /// This method is a wrapper around both the GetWindowLong (32-bit) and the GetWindowLongPtr
- /// (64-bit) version of these functions.<para/>
- /// This method will always call the "correct" function for this machine,
- /// and return the value wrapped in an <see cref="IntPtr"/>.
- /// </remarks>
- public static IntPtr GetWindowLong(IntPtr window, GetWindowLongIndex index)
- {
- return GetWindowLong(window, (int)index);
- }
-
- /// <summary>
- /// Retrieves information about the specified window. The function also retrieves the value at a specified
- /// offset into the extra window memory.
- /// </summary>
- /// <param name="window">
- /// A handle to the window and, indirectly, the class to which the window belongs.
- /// </param>
- /// <param name="index">
- /// The zero-based offset to the value to be retrieved. Valid values are in the range zero through the
- /// number of bytes of extra window memory, minus the size of a <see cref="IntPtr"/>.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is the requested value.<para/>
- /// If the function fails, the return value is zero. To get extended error information,
- /// call <see cref="Marshal.GetLastWin32Error"/>.<para/>
- /// If SetWindowLong or SetWindowLongPtr has not been called previously, GetWindowLongPtr returns zero for
- /// values in the extra window or class memory.
- /// </returns>
- /// <remarks>
- /// This method is a wrapper around both the GetWindowLong (32-bit) and the GetWindowLongPtr (64-bit)
- /// version of these functions.<para/>
- /// This method will always call the "correct" function for this machine,
- /// and return the value wrapped in an <see cref="IntPtr"/>.
- /// </remarks>
- public static IntPtr GetWindowLong(IntPtr window, int index)
- {
- if (IntPtr.Size == 8)
- {
- return GetWindowLongPtr(window, index);
- }
- else
- {
- return new IntPtr(GetWindowLongPrivate(window, index));
- }
- }
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- private static extern int GetWindowLongPrivate([In] IntPtr window, [In] int index);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- private static extern IntPtr GetWindowLongPtr([In] IntPtr window, [In] int index);
-
- /// <summary>
- /// Calls the default window procedure to provide default processing for any window messages that an
- /// application does not process. This function ensures that every message is processed.
- /// </summary>
- /// <param name="window">A handle to the window procedure that received the message.</param>
- /// <param name="msg">The message.</param>
- /// <param name="wparam">
- /// Additional message information. The content of this parameter depends on the value of the
- /// <paramref name="msg"/> parameter.
- /// </param>
- /// <param name="lparam">
- /// Additional message information. The content of this parameter depends on the value of the
- /// <paramref name="msg"/> parameter.
- /// </param>
- /// <returns>The return value is the result of the message processing and depends on the message.</returns>
- [DllImport(Library, CharSet = CharSet.Unicode)]
- public static extern IntPtr DefWindowProc
- (
- [In] IntPtr window,
- [In] WindowMessage msg,
- [In] IntPtr wparam,
- [In] IntPtr lparam
- );
-
- /// <summary>
- /// Sets the specified window's show state.
- /// </summary>
- /// <param name="window">A handle to the window.</param>
- /// <param name="showCommand">Controls how the window is to be shown.</param>
- /// <returns>If the window was previously visible, the return value is true. Otherwise false.</returns>
- [DllImport(Library, SetLastError = true)]
- [SuppressUnmanagedCodeSecurity]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ShowWindow([In] IntPtr window, [In] ShowWindowCommand showCommand);
-
- [DllImport(Library, SetLastError = true)]
- [SuppressUnmanagedCodeSecurity]
- public static extern IntPtr BeginPaint(IntPtr hwnd, out PAINTSTRUCT lpPaint);
-
- [DllImport(Library, SetLastError = true)]
- [SuppressUnmanagedCodeSecurity]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool EndPaint(IntPtr hWnd, [In] ref PAINTSTRUCT lpPaint);
-
- [DllImport(Library, SetLastError = true)]
- [SuppressUnmanagedCodeSecurity]
- public static extern IntPtr GetDC(IntPtr hWnd);
-
- [DllImport(Library, SetLastError = true)]
- [SuppressUnmanagedCodeSecurity]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC);
-
- /// <summary>
- /// Copies the text of the specified window's title bar (if it has one) into a buffer. If the specified
- /// window is a control, the text of the control is copied. However,
- /// <see cref="GetWindowText(IntPtr, StringBuilder, int)"/> cannot retrieve the text of a control in another
- /// application.
- /// </summary>
- /// <param name="window">A handle to the window or control containing the text.</param>
- /// <param name="windowText">
- /// The buffer that will receive the text. If the string is as long or longer than the buffer,
- /// the string is truncated and terminated with a null character.
- /// </param>
- /// <param name="maxCharCount">
- /// The maximum number of characters to copy to the buffer, including the null character.
- /// If the text exceeds this limit, it is truncated.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is the length, in characters, of the copied string, not
- /// including the terminating null character. If the window has no title bar or text, if the title bar
- /// is empty, or if the window or control handle is invalid, the return value is zero. To get extended
- /// error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern int GetWindowText
- (
- [In] IntPtr window,
- [In] [Out] StringBuilder windowText,
- [In] int maxCharCount
- );
-
- /// <summary>
- /// Changes the text of the specified window's title bar (if it has one). If the specified window is a
- /// control, the text of the control is changed. However, <see cref="SetWindowText(IntPtr, string)"/>
- /// cannot change the text of a control in another application.
- /// </summary>
- /// <param name="window">A handle to the window or control whose text is to be changed.</param>
- /// <param name="newText">The new title or control text.</param>
- /// <returns>
- /// If the function succeeds, the return value is nonzero.<para/>
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetWindowText
- (
- [In] IntPtr window,
- [In] [Optional] string newText
- );
-
- /// <summary>
- /// Changes the size, position, and Z order of a child, pop-up, or top-level window. These windows are
- /// ordered according to their appearance on the screen. The topmost window receives the highest rank
- /// and is the first window in the Z order.
- /// </summary>
- /// <param name="window">A handle to the window.</param>
- /// <param name="windowInsertAfter">
- /// A handle to the window to precede the positioned window in the Z order.
- /// This parameter must be a window handle.
- /// </param>
- /// <param name="x">The new position of the left side of the window, in client coordinates.</param>
- /// <param name="y">The new position of the top of the window, in client coordinates.</param>
- /// <param name="cx">The new width of the window, in pixels.</param>
- /// <param name="cy">The new height of the window, in pixels.</param>
- /// <param name="flags">The window sizing and positioning flags.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetWindowPos
- (
- [In] IntPtr window,
- [In] [Optional] IntPtr windowInsertAfter,
- [In] int x,
- [In] int y,
- [In] int cx,
- [In] int cy,
- [In] SetWindowPosFlags flags
- );
-
- /// <summary>
- /// Changes the size, position, and Z order of a child, pop-up, or top-level window.
- /// These windows are ordered according to their appearance on the screen. The topmost window receives
- /// the highest rank and is the first window in the Z order.
- /// </summary>
- /// <param name="window">One of the pre-defined values for window Z order positioning.</param>
- /// <param name="windowInsertAfter">
- /// A handle to the window to precede the positioned window in the Z order.
- /// This parameter must be a window handle.
- /// </param>
- /// <param name="x">The new position of the left side of the window, in client coordinates.</param>
- /// <param name="y">The new position of the top of the window, in client coordinates.</param>
- /// <param name="cx">The new width of the window, in pixels.</param>
- /// <param name="cy">The new height of the window, in pixels.</param>
- /// <param name="flags">The window sizing and positioning flags.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetWindowPos
- (
- [In] IntPtr window,
- [In] [Optional] SetWindowPosHwndEnum windowInsertAfter,
- [In] int x,
- [In] int y,
- [In] int cx,
- [In] int cy,
- [In] SetWindowPosFlags flags
- );
-
- /// <summary>
- /// Brings the thread that created the specified window into the foreground and activates the window.
- /// Keyboard input is directed to the window, and various visual cues are changed for the user.
- /// The system assigns a slightly higher priority to the thread that created the foreground window
- /// than it does to other threads.
- /// </summary>
- /// <param name="window">
- /// A handle to the window that should be activated and brought to the foreground.
- /// </param>
- /// <returns>
- /// If the window was brought to the foreground, the return value is true.<para/>
- /// If the window was not brought to the foreground, the return value is false.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool SetForegroundWindow([In] IntPtr window);
-
- /// <summary>
- /// Brings the specified window to the top of the Z order. If the window is a top-level window, it is
- /// activated. If the window is a child window, the top-level parent window associated with the child
- /// window is activated.
- /// </summary>
- /// <param name="window">A handle to the window to bring to the top of the Z order.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool BringWindowToTop([In] IntPtr window);
-
- /// <summary>
- /// Changes the parent window of the specified child window.
- /// </summary>
- /// <param name="childWindow">A handle to the child window.</param>
- /// <param name="newParent">
- /// A handle to the new parent window. If this parameter is
- /// <see cref="IntPtr.Zero"/>, the desktop window becomes the new parent window.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a handle to the previous parent window.<para/>
- /// If the function fails, the return value is null.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- public static extern IntPtr SetParent
- (
- [In] IntPtr childWindow,
- [In] [Optional] IntPtr newParent
- );
-
- /// <summary>
- /// Retrieves information about the specified window.
- /// </summary>
- /// <param name="hwnd">A handle to the window whose information is to be retrieved.</param>
- /// <param name="wi">
- /// A pointer to a <see cref="WindowInfo"/> structure to receive the information.
- /// Note that you must set the <see cref="WindowInfo.Size"/> member to
- /// <see cref="WindowInfo.SizeInBytes"/> before calling this function.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetWindowInfo([In] IntPtr hwnd, [In] [Out] ref WindowInfo wi);
-
- /// <summary>
- /// Determines the visibility state of the specified window.
- /// </summary>
- /// <param name="window">A handle to the window to be tested.</param>
- /// <returns>
- /// If the specified window, its parent window, its parent's parent window, and so forth, have the
- /// <see cref="WindowStyles.Visible"/> style, the return value is true. Otherwise,
- /// the return value is false.<para/>
- /// Because the return value specifies whether the window has the <see cref="WindowStyles.Visible"/>
- /// style, it may be true even if the window is totally obscured by other windows.
- /// </returns>
- [DllImport(Library)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool IsWindowVisible([In] IntPtr window);
-
- /// <summary>
- /// Retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given
- /// in screen coordinates that are relative to the upper-left corner of the screen.
- /// </summary>
- /// <param name="windowHandle">Handle to the window whose client coordinates are to be retrieved.</param>
- /// <param name="windowRectangle">
- /// Pointer to a structure that receives the screen coordinates of the upper-left and
- /// lower-right corners of the window.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetWindowRect([In] IntPtr windowHandle, [Out] out Rect windowRectangle);
-
- /// <summary>
- /// Retrieves the coordinates of a window's client area. The client coordinates specify the upper-left
- /// and lower-right corners of the client area. Because client coordinates are relative to the upper-left
- /// corner of a window's client area, the coordinates of the upper-left corner are (0,0).
- /// </summary>
- /// <param name="windowHandle">Handle to the window whose client coordinates are to be retrieved.</param>
- /// <param name="clientRectangle">
- /// Pointer to a <see cref="Rect"/> structure that receives the client coordinates.
- /// The <see cref="Rect.Left"/> and <see cref="Rect.Top"/> members are zero. The <see cref="Rect.Right"/>
- /// and <see cref="Rect.Bottom"/> members contain the width and height of the window.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetClientRect([In] IntPtr windowHandle, [Out] out Rect clientRectangle);
-
- /// <summary>
- /// Converts the screen coordinates of a specified point on the screen to client-area coordinates.
- /// </summary>
- /// <param name="window">Handle to the window whose client area will be used for the conversion.</param>
- /// <param name="point">
- /// Pointer to a <see cref="Point"/> structure that specifies the screen coordinates to be converted.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ScreenToClient([In] IntPtr window, ref Point point);
-
- /// <summary>
- /// Converts the client-area coordinates of a specified point to screen coordinates.
- /// </summary>
- /// <param name="window">Handle to the window whose client area will be used for the conversion.</param>
- /// <param name="point">
- /// Pointer to a <see cref="Point"/> structure that contains the client coordinates to be converted.
- /// The new screen coordinates are copied into this structure if the function succeeds.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the function fails, the return value is false.
- /// </returns>
- [SuppressUnmanagedCodeSecurity]
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool ClientToScreen([In] IntPtr window, [In] [Out] ref Point point);
- }
- }
-}
+++ /dev/null
-using System;
-using System.Runtime.InteropServices;
-
-namespace OpenToolkit.NT.Native
-{
- public static partial class User32
- {
- /// <summary>
- /// Provides a subset of functions from the Windows API,
- /// specifically those imported from user32.dll that deal with window classes.
- /// </summary>
- public static class WindowClass
- {
- /// <summary>
- /// Retrieves information about a window class,
- /// including a handle to the small icon associated with the window class.
- /// </summary>
- /// <param name="instance">
- /// A handle to the instance of the application that created the class.
- /// To retrieve information about classes defined by the system (such as buttons or list boxes),
- /// set this parameter to <see cref="IntPtr.Zero"/>.
- /// </param>
- /// <param name="className">
- /// A string containing the class name. The name must be that of a preregistered class or a class
- /// registered by a previous call to the RegisterClass or
- /// <see cref="RegisterClassEx(ref ExtendedWindowClass)"/> function.
- /// </param>
- /// <param name="extendedWindowClass">
- /// A pointer to a <see cref="ExtendedWindowClass"/> structure
- /// that receives the information about the class.
- /// </param>
- /// <returns>
- /// If the function finds a matching class and successfully copies the data, the return value is
- /// true.<para/>
- /// If the function does not find a matching class and successfully copy the data, the return value is
- /// false. To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetClassInfoEx
- (
- [In] [Optional] IntPtr instance,
- [In] string className,
- [Out] out ExtendedWindowClass extendedWindowClass
- );
-
- /// <summary>
- /// Retrieves information about a window class,
- /// including a handle to the small icon associated with the window class.
- /// </summary>
- /// <param name="instance">
- /// A handle to the instance of the application that created the class.
- /// To retrieve information about classes defined by the system (such as buttons or list boxes),
- /// set this parameter to <see cref="IntPtr.Zero"/>.
- /// </param>
- /// <param name="className">
- /// A pointer to a string containing the class name.
- /// The name must be that of a preregistered class or a class registered by a previous call to the
- /// RegisterClass or <see cref="RegisterClassEx(ref ExtendedWindowClass)"/> function.
- /// </param>
- /// <param name="extendedWindowClass">
- /// A pointer to a <see cref="ExtendedWindowClass"/> structure
- /// that receives the information about the class.
- /// </param>
- /// <returns>
- /// If the function finds a matching class and successfully copies the data, the return value is
- /// true.<para/>
- /// If the function does not find a matching class and successfully copy the data, the return value
- /// is false. To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool GetClassInfoEx
- (
- [In] IntPtr instance,
- [In] IntPtr className,
- [Out] out ExtendedWindowClass extendedWindowClass
- );
-
- /// <summary>
- /// Retrieves information about a window class,
- /// including a handle to the small icon associated with the window class.
- /// </summary>
- /// <param name="instance">
- /// A handle to the instance of the application that created the class.
- /// To retrieve information about classes defined by the system (such as buttons or list boxes),
- /// set this parameter to <see cref="IntPtr.Zero"/>.
- /// </param>
- /// <param name="classAtom">
- /// A class atom created by a previous call to RegisterClass
- /// or <see cref="RegisterClassEx(ref ExtendedWindowClass)"/>.
- /// </param>
- /// <param name="extendedWindowStyle">
- /// A pointer to a <see cref="ExtendedWindowClass"/> structure
- /// that receives the information about the class.
- /// </param>
- /// <returns>
- /// If the function finds a matching class and successfully copies the data, the return value is
- /// true.<para/>
- /// If the function does not find a matching class and successfully copy the data, the return value is
- /// false. To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- public static bool GetClassInfoEx
- (
- [In] IntPtr instance,
- [In] ushort classAtom,
- [Out] out ExtendedWindowClass extendedWindowStyle
- )
- {
- return GetClassInfoEx(instance, new IntPtr(classAtom), out extendedWindowStyle);
- }
-
- /// <summary>
- /// Registers a window class for subsequent use in calls to the CreateWindow or
- /// <see cref="Window.CreateWindowEx(ExtendedWindowStyles, IntPtr, string,
- /// WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/> function.
- /// </summary>
- /// <param name="extendedWindowClass">
- /// A pointer to a <see cref="ExtendedWindowClass"/> structure. You must fill the structure with the
- /// appropriate class attributes before passing it to the function.
- /// </param>
- /// <returns>
- /// If the function succeeds, the return value is a class atom that uniquely identifies the class being
- /// registered. This atom can only be used by the CreateWindow,
- /// <see cref="Window.CreateWindowEx(ExtendedWindowStyles, IntPtr, string,
- /// WindowStyles, int, int, int, int, IntPtr, IntPtr, IntPtr, IntPtr)"/>,
- /// GetClassInfo, <see cref="GetClassInfoEx(IntPtr, IntPtr, out ExtendedWindowClass)"/>, FindWindow,
- /// FindWindowEx, and <see cref="UnregisterClass(string, IntPtr)"/> functions
- /// and the IActiveIMMap::FilterClientWindows method.<para/>
- /// If the function fails, the return value is zero.
- /// To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- public static extern ushort RegisterClassEx([In] ref ExtendedWindowClass extendedWindowClass);
-
- /// <summary>
- /// Unregisters a window class, freeing the memory required for the class.
- /// </summary>
- /// <param name="className">
- /// A string specifying the window class name. This class name must have been
- /// registered by a previous call to the RegisterClass or
- /// <see cref="RegisterClassEx(ref ExtendedWindowClass)"/> function.
- /// </param>
- /// <param name="moduleInstance">A handle to the instance of the module that created the class.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the class could not be found or if a window still exists that was created with the class, the return
- /// value is false. To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- /// <remarks>
- /// Before calling this function, an application must destroy all windows created with the
- /// specified class.<para/>
- /// All window classes that an application registers are unregistered when it terminates.
- /// </remarks>
- [DllImport(Library, SetLastError = true, CharSet = CharSet.Unicode)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool UnregisterClass([In] string className, [In] [Optional] IntPtr moduleInstance);
-
- /// <summary>
- /// Unregisters a window class, freeing the memory required for the class.
- /// </summary>
- /// <param name="className">
- /// A pointer to a string specifying the window class name. This class name must
- /// have been registered by a previous call to the RegisterClass or
- /// <see cref="RegisterClassEx(ref ExtendedWindowClass)"/> function.
- /// </param>
- /// <param name="moduleInstance">A handle to the instance of the module that created the class.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the class could not be found or if a window still exists that was created with the class, the return
- /// value is false. To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- /// <remarks>
- /// Before calling this function, an application must destroy all windows created with the
- /// specified class.<para/>
- /// All window classes that an application registers are unregistered when it terminates.
- /// </remarks>
- [DllImport(Library, SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool UnregisterClass
- (
- [In] IntPtr className,
- [In] [Optional] IntPtr moduleInstance
- );
-
- /// <summary>
- /// Unregisters a window class, freeing the memory required for the class.
- /// </summary>
- /// <param name="classAtom">
- /// A class atom created by a previous call to the RegisterClass or
- /// <see cref="RegisterClassEx(ref ExtendedWindowClass)"/> function.
- /// </param>
- /// <param name="moduleInstance">A handle to the instance of the module that created the class.</param>
- /// <returns>
- /// If the function succeeds, the return value is true.<para/>
- /// If the class could not be found or if a window still exists that was created with the class, the return
- /// value is false. To get extended error information, call <see cref="Marshal.GetLastWin32Error"/>.
- /// </returns>
- /// <remarks>
- /// Before calling this function, an application must destroy all windows created with the
- /// specified class.<para/>
- /// All window classes that an application registers are unregistered when it terminates.
- /// </remarks>
- public static bool UnregisterClass([In] ushort classAtom, [In] [Optional] IntPtr moduleInstance)
- {
- return UnregisterClass(new IntPtr(classAtom), moduleInstance);
- }
- }
- }
-}
+++ /dev/null
-//
-// XLibBackend.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using System.Text;
-using OpenToolkit.NT.Native;
-
-namespace Crow.Win32
-{
-
- public class Win32Backend : IBackend
- {
- public void CleanUp()
- {
- User32.Window.ReleaseDC(handle, hdc);
- User32.Window.DestroyWindow(handle);
- }
-
- public void Flush()
- {
- iFace.surf.Flush ();
- //throw new NotImplementedException();
- }
-
- WindowProc WindowProcedureDelegate;
- string className = "myWindowClass";
- IntPtr instance = Marshal.GetHINSTANCE(typeof(Win32Backend).Module);
- IntPtr handle = IntPtr.Zero;
- IntPtr hdc = IntPtr.Zero;
- Interface iFace;
-
- public void Init(Interface _iFace)
- {
- iFace = _iFace;
-
- WindowProcedureDelegate = WindowProcedure;
-
- Rect rect = new Rect
- {
- Left = iFace.ClientRectangle.Left,
- Top = iFace.ClientRectangle.Top,
- Right = iFace.ClientRectangle.Right,
- Bottom = iFace.ClientRectangle.Bottom
- };
-
- User32.Window.AdjustWindowRectEx(ref rect, 0, false, 0);
-
- ExtendedWindowClass wc = new ExtendedWindowClass
- {
- Size = ExtendedWindowClass.SizeInBytes,
- Style = 0,
- WindowProc = WindowProcedureDelegate,
- ClassExtra = 0,
- WindowExtra = 0,
- Instance = instance,
- Icon = IntPtr.Zero,
- Cursor = User32.Cursor.LoadCursor(CursorName.Arrow),
- //Background = Gdi32.GetStockObject(GetStockObjectType.BlackBrush),
- MenuName = null,
- ClassName = className,
- };
-
- ushort atom = User32.WindowClass.RegisterClassEx(ref wc);
-
- handle = User32.Window.CreateWindowEx(
- ExtendedWindowStyles.ClientEdge,
- className,
- "The title of my window",
- WindowStyles.OverlappedWindow,
-
- rect.Left,
- rect.Top,
- rect.Width,
- rect.Height,
- IntPtr.Zero,
- IntPtr.Zero,
- instance,
- IntPtr.Zero
- );
-
- User32.Window.ShowWindow(handle, ShowWindowCommand.Show);
-
- hdc = User32.Window.GetDC(handle);
- iFace.surf = new Crow.Cairo.Win32Surface(hdc);
-
- }
-
- public void ProcessEvents()
- {
- Msg msg;
- while (User32.Message.PeekMessage(out msg, IntPtr.Zero, 0, 0, PeekMessageActions.Remove))
- {
- User32.Message.TranslateMessage(ref msg);
- User32.Message.DispatchMessage(ref msg);
- }
- }
-
- public bool IsDown (Key key) {
- return false;
- }
- public bool Shift {
- get {
- throw new NotImplementedException ();
- }
- }
-
- public bool Ctrl {
- get {
- throw new NotImplementedException ();
- }
- }
-
- public bool Alt {
- get {
- throw new NotImplementedException ();
- }
- }
-
- void HandleWindowPositionChanged(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam)
- {
- var pos = Marshal.PtrToStructure<WindowPosition>(lParam);
- if (pos.HWnd == handle)
- {
- Rectangle bounds = new Rectangle(pos.X, pos.Y, pos.Width, pos.Height);
-
- User32.Window.SetWindowPos
- (
- handle,
- IntPtr.Zero,
- bounds.X,
- bounds.Y,
- bounds.Width,
- bounds.Height,
- SetWindowPosFlags.NoZOrder | SetWindowPosFlags.NoOwnerZOrder |
- SetWindowPosFlags.NoActivate | SetWindowPosFlags.NoSendChanging
- );
- bounds.Left = bounds.Top = 0;
- iFace.ProcessResize (bounds);
- }
- }
-
- static Key GetKey(int code)
- {
- switch (code)
- {
- // 0 - 15
- case 0: return Key.NoSymbol;
- case 1: return Key.Escape;
- case 2: return Key.key_1;
- case 3: return Key.key_2;
- case 4: return Key.key_3;
- case 5: return Key.key_4;
- case 6: return Key.key_5;
- case 7: return Key.key_6;
- case 8: return Key.key_7;
- case 9: return Key.key_8;
- case 10: return Key.key_9;
- case 11: return Key.key_0;
- case 12: return Key.minus;
- case 13: return Key.plus;
- case 14: return Key.BackSpace;
- case 15: return Key.Tab;
-
- // 16-31
- case 16: return Key.Q;
- case 17: return Key.W;
- case 18: return Key.E;
- case 19: return Key.R;
- case 20: return Key.T;
- case 21: return Key.Y;
- case 22: return Key.U;
- case 23: return Key.I;
- case 24: return Key.O;
- case 25: return Key.P;
- case 26: return Key.bracketleft;
- case 27: return Key.bracketright;
- case 28: return Key.Return;
- case 29: return Key.Control_L;
- case 30: return Key.A;
- case 31: return Key.S;
-
- // 32 - 47
- case 32: return Key.D;
- case 33: return Key.F;
- case 34: return Key.G;
- case 35: return Key.H;
- case 36: return Key.J;
- case 37: return Key.K;
- case 38: return Key.L;
- case 39: return Key.semicolon;
- case 40: return Key.quotedbl;
- case 41: return Key.grave;
- case 42: return Key.Shift_L;
- case 43: return Key.backslash;
- case 44: return Key.Z;
- case 45: return Key.X;
- case 46: return Key.C;
- case 47: return Key.V;
-
- // 48 - 63
- case 48: return Key.B;
- case 49: return Key.N;
- case 50: return Key.M;
- case 51: return Key.comma;
- case 52: return Key.period;
- case 53: return Key.slash;
- case 54: return Key.Shift_R;
- case 55: return Key.Print;
- case 56: return Key.Alt_L;
- case 57: return Key.space;
- case 58: return Key.Caps_Lock;
- case 59: return Key.F1;
- case 60: return Key.F2;
- case 61: return Key.F3;
- case 62: return Key.F4;
- case 63: return Key.F5;
-
- // 64 - 79
- case 64: return Key.F6;
- case 65: return Key.F7;
- case 66: return Key.F8;
- case 67: return Key.F9;
- case 68: return Key.F10;
- case 69: return Key.Num_Lock;
- case 70: return Key.Scroll_Lock;
- case 71: return Key.Home;
- case 72: return Key.Up;
- case 73: return Key.Page_Up;
- case 74: return Key.KP_Subtract;
- case 75: return Key.Left;
- case 76: return Key.KP_5;
- case 77: return Key.Right;
- case 78: return Key.KP_Add;
- case 79: return Key.End;
-
- // 80 - 95
- case 80: return Key.Down;
- case 81: return Key.Page_Down;
- case 82: return Key.Insert;
- case 83: return Key.Delete;
- case 84: return Key.NoSymbol;
- case 85: return Key.NoSymbol;
- case 86: return Key.NoSymbol;
- case 87: return Key.F11;
- case 88: return Key.F12;
- case 89: return Key.Pause;
- case 90: return Key.NoSymbol;
- case 91: return Key.Meta_L;
- case 92: return Key.Meta_R;
- case 93: return Key.Menu;
- case 94: return Key.NoSymbol;
- case 95: return Key.NoSymbol;
-
- // 96 - 106
- case 96: return Key.NoSymbol;
- case 97: return Key.NoSymbol;
- case 98: return Key.NoSymbol;
- case 99: return Key.NoSymbol;
- case 100: return Key.F13;
- case 101: return Key.F14;
- case 102: return Key.F15;
- case 103: return Key.F16;
- case 104: return Key.F17;
- case 105: return Key.F18;
- case 106: return Key.F19;
-
- default: return Key.NoSymbol;
- }
- }
- const long ExtendedBit = 1 << 24; // Used to distinguish left and right control, alt and enter keys.
-
- void handleKeyboard (IntPtr lParam, IntPtr wParam, bool pressed) {
- bool extended = (lParam.ToInt64() & ExtendedBit) != 0;
- uint scancode = (uint)((lParam.ToInt64() >> 16) & 0xFF);
- //ushort repeat_count = unchecked((ushort)((ulong)lParam.ToInt64() & 0xffffu));
-// VirtualKey vkey = (VirtualKey)wParam;
-// var key = WinKeyMap.TranslateKey(scancode, vkey, extended, false, out bool is_valid);
- Key k = GetKey ((int)scancode);
-
- if (pressed)
- iFace.ProcessKeyDown (k);
- else
- iFace.ProcessKeyUp (k);
- }
- void handleChar (IntPtr lParam, IntPtr wParam) {
- char c = IntPtr.Size == 4 ?
- (char)wParam.ToInt32() :
- (char)wParam.ToInt64();
-
- if (!char.IsControl (c))
- iFace.ProcessKeyPress (c);
- }
-
-
-
- IntPtr WindowProcedure(IntPtr handle, WindowMessage message, IntPtr wParam, IntPtr lParam)
- {
- var result = IntPtr.Zero;
-
-
- switch (message)
- {
- case WindowMessage.MouseMove:
- iFace.ProcessMouseMove
- ((int)((uint)lParam.ToInt32() & 0x0000FFFF), (int)(((uint)lParam.ToInt32() & 0xFFFF0000) >> 16));
- break;
- case WindowMessage.LButtonDown:
- iFace.ProcessMouseButtonDown(Crow.MouseButton.Left);
- return IntPtr.Zero;
- case WindowMessage.RButtonDown:
- iFace.ProcessMouseButtonDown(Crow.MouseButton.Right);
- return IntPtr.Zero;
- case WindowMessage.MButtonDown:
- iFace.ProcessMouseButtonDown(Crow.MouseButton.Middle);
- return IntPtr.Zero;
- case WindowMessage.LButtonUp:
- iFace.ProcessMouseButtonUp(Crow.MouseButton.Left);
- return IntPtr.Zero;
- case WindowMessage.RButtonUp:
- iFace.ProcessMouseButtonUp(Crow.MouseButton.Right);
- return IntPtr.Zero;
- case WindowMessage.MButtonUp:
- iFace.ProcessMouseButtonUp(Crow.MouseButton.Middle);
- return IntPtr.Zero;
- case WindowMessage.MouseWheel:
- iFace.ProcessMouseWheelChanged ((((long)wParam << 32) >> 48) / 120.0f);
- return IntPtr.Zero;
- case WindowMessage.MouseHWheel:
- iFace.ProcessMouseWheelChanged ((((long)wParam << 32) >> 48) / 120.0f);
- return IntPtr.Zero;
- case WindowMessage.KeyDown:
- case WindowMessage.SystemKeyDown:
- handleKeyboard (lParam, wParam, true);
- return IntPtr.Zero;
- case WindowMessage.KeyUp:
- case WindowMessage.SystemKeyUp:
- handleKeyboard (lParam, wParam, false);
- return IntPtr.Zero;
- case WindowMessage.Char:
- handleChar (lParam, wParam);
- break;
- case WindowMessage.WindowPosChanged:
- HandleWindowPositionChanged(handle, message, wParam, lParam);
- break;
-
-
- /*case WindowMessage.Activate:
- HandleActivate(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.EnterMenuLoop:
- case WindowMessage.EnterSizeMove:
- HandleEnterModalLoop(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.ExitMenuLoop:
- case WindowMessage.ExitSizeMove:
- HandleExitModalLoop(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.EraseBackground:
- // This is triggered only when the client area changes.
- // As such it does not affect steady-state performance.
- break;
-
-
- case WindowMessage.StyleChanged:
- HandleStyleChanged(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.Size:
- HandleSize(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.SetCursor:
- result = HandleSetCursor(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.CaptureChanged:
- HandleCaptureChanged(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.Char:
- HandleChar(handle, message, wParam, lParam);
- break;
-
-
-
- case WindowMessage.MouseLeave:
- HandleMouseLeave(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.MouseWheel:
- HandleMouseWheel(handle, message, wParam, lParam);
- return IntPtr.Zero;
-
- case WindowMessage.MouseHWheel:
- HandleMouseHWheel(handle, message, wParam, lParam);
- return IntPtr.Zero;
-
-
- // Keyboard events:
- case WindowMessage.KeyDown:
- case WindowMessage.KeyUp:
- case WindowMessage.SystemKeyDown:
- case WindowMessage.SystemKeyUp:
- HandleKeyboard(handle, message, wParam, lParam);
- return IntPtr.Zero;
-
- case WindowMessage.SystemChar:
- return IntPtr.Zero;
-
- case WindowMessage.KillFocus:
- HandleKillFocus(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.DropFiles:
- HandleDropFiles(handle, message, wParam, lParam);
- break;
-
- case WindowMessage.Create:
- HandleCreate(handle, message, wParam, lParam);
- break;
- case WindowMessage.Paint:
- dc = User32.Window.BeginPaint(handle, out paintStruct);
-
- return IntPtr.Zero;*/
- case WindowMessage.Close:
- User32.Window.DestroyWindow(handle);
- return IntPtr.Zero;
- case WindowMessage.Destroy:
- User32.Message.PostQuitMessage(0);
- //User32.WindowClass.UnregisterClass(className, instance);
- break;
- }
-
- if (result != IntPtr.Zero)
- return result;
-
- return User32.Window.DefWindowProc(handle, message, wParam, lParam);
- }
-
- public void SetCursor (MouseCursors newCur)
- {
- //throw new NotImplementedException ();
- }
-
- public void SetCursorPosition (int x, int y)
- {
- throw new NotImplementedException ();
- }
- }
-}
-
+++ /dev/null
-//
-// XLibBackend.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using System.Text;
-
-
-
-namespace Crow.XCB
-{
- using xcb_window_t = System.UInt32;
- using xcb_pixmap_t = System.UInt32;
- using xcb_cursor_t = System.UInt32;
- using xcb_font_t = System.UInt32;
- using xcb_colormap_t = System.UInt32;
- using xcb_atom_t = System.UInt32;
- using xcb_drawable_t = System.UInt32;
- using xcb_visualid_t = System.UInt32;
- using xcb_keysym_t = System.UInt32;
- using xcb_keycode_t = System.Byte;
- using xcb_timestamp_t = System.UInt32;
-
- using xcb_void_cookie_t = System.UInt32;
-
- public class XCBBackend : IBackend
- {
- const byte XCB_COPY_FROM_PARENT = 0;
-
- #region struct an enums
-
- enum xcb_window_class_t : ushort {
- COPY_FROM_PARENT = 0,
- INPUT_OUTPUT = 1,
- INPUT_ONLY = 2
- }
-
- enum xcb_button_t : byte {
- Left = 1,
- Middle,
- Right,
- WheelUp,
- WheelDown,
- But6,
- But7,
- But8,
- But9,
- But10,
- }
-
- [Flags]
- enum xcb_event_mask_t : uint {
- NO_EVENT = 0,
- KEY_PRESS = 1,
- KEY_RELEASE = 2,
- BUTTON_PRESS = 4,
- BUTTON_RELEASE = 8,
- ENTER_WINDOW = 16,
- LEAVE_WINDOW = 32,
- POINTER_MOTION = 64,
- POINTER_MOTION_HINT = 128,
- BUTTON_1_MOTION = 256,
- BUTTON_2_MOTION = 512,
- BUTTON_3_MOTION = 1024,
- BUTTON_4_MOTION = 2048,
- BUTTON_5_MOTION = 4096,
- BUTTON_MOTION = 8192,
- KEYMAP_STATE = 16384,
- EXPOSURE = 32768,
- VISIBILITY_CHANGE = 65536,
- STRUCTURE_NOTIFY = 131072,
- RESIZE_REDIRECT = 262144,
- SUBSTRUCTURE_NOTIFY = 524288,
- SUBSTRUCTURE_REDIRECT = 1048576,
- FOCUS_CHANGE = 2097152,
- PROPERTY_CHANGE = 4194304,
- COLOR_MAP_CHANGE = 8388608,
- OWNER_GRAB_BUTTON = 16777216
- }
-
- enum xcb_event_type : byte {
- KEY_PRESS = 2,
- KEY_RELEASE,
- BUTTON_PRESS,
- BUTTON_RELEASE,
- MOTION_NOTIFY,
- ENTER_NOTIFY,
- LEAVE_NOTIFY,
- FOCUS_IN,
- FOCUS_OUT,
- KEYMAP_NOTIFY,
- EXPOSE,
- GRAPHICS_EXPOSURE,
- NO_EXPOSURE,
- VISIBILITY_NOTIFY,
- CREATE_NOTIFY,
- DESTROY_NOTIFY,
- UNMAP_NOTIFY,
- MAP_NOTIFY,
- MAP_REQUEST,
- REPARENT_NOTIFY,
- CONFIGURE_NOTIFY,
- CONFIGURE_REQUEST,
- GRAVITY_NOTIFY,
- RESIZE_REQUEST,
- CIRCULATE_NOTIFY,
- CIRCULATE_REQUEST,
- PROPERTY_NOTIFY,
- SELECTION_CLEAR,
- SELECTION_REQUEST,
- SELECTION_NOTIFY,
- COLORMAP_NOTIFY,
- CLIENT_MESSAGE,
- MAPPING_NOTIFY,
- GE_GENERIC,
- }
- [Flags]
- enum xcb_cw_t : uint {
- BACK_PIXMAP = 1,
- BACK_PIXEL = 2,
- BORDER_PIXMAP = 4,
- BORDER_PIXEL = 8,
- BIT_GRAVITY = 16,
- WIN_GRAVITY = 32,
- BACKING_STORE = 64,
- BACKING_PLANES = 128,
- BACKING_PIXEL = 256,
- OVERRIDE_REDIRECT = 512,
- SAVE_UNDER = 1024,
- EVENT_MASK = 2048,
- DONT_PROPAGATE = 4096,
- COLORMAP = 8192,
- CURSOR = 16384
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_generic_event_t{
- public xcb_event_type response_type; /**< Type of the response */
- public byte pad0; /**< Padding */
- public UInt16 sequence; /**< Sequence number */
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
- UInt32[] pad;
- public UInt32 full_sequence; /**< full sequence */
- }
-
- [StructLayout(LayoutKind.Explicit, Size = 32)]
- struct xcb_event_t{
- [FieldOffsetAttribute(0)]
- public xcb_event_type response_type;
-
- [FieldOffsetAttribute(1)]
- public byte detail;
- [FieldOffsetAttribute(1)]
- public xcb_keycode_t keycode;
- [FieldOffsetAttribute(1)]
- public xcb_button_t button;
-
- [FieldOffsetAttribute(2)]
- public UInt16 sequence;
- [FieldOffsetAttribute(4)]
- public xcb_timestamp_t time;
- [FieldOffsetAttribute(8)]
- public xcb_window_t root;
-
- //expose event fields
- [FieldOffsetAttribute(4)]
- public xcb_window_t window;
- [FieldOffsetAttribute(8)]
- public UInt16 x;
- [FieldOffsetAttribute(10)]
- public UInt16 y;
- [FieldOffsetAttribute(12)]
- public UInt16 width;
- [FieldOffsetAttribute(14)]
- public UInt16 height;
- [FieldOffsetAttribute(14)]
- public UInt16 count;
- ///
-
- [FieldOffsetAttribute(12)]
- public xcb_window_t evt;
- [FieldOffsetAttribute(16)]
- public xcb_window_t child;
- [FieldOffsetAttribute(20)]
- public UInt16 root_x;
- [FieldOffsetAttribute(22)]
- public UInt16 root_y;
- [FieldOffsetAttribute(24)]
- public UInt16 event_x;
- [FieldOffsetAttribute(26)]
- public UInt16 event_y;
- [FieldOffsetAttribute(28)]
- public UInt16 state;
- [FieldOffsetAttribute(30)]
- public byte same_screen;
-
- [FieldOffsetAttribute(31)]
- public byte same_screen_focus;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_key_press_event_t {
- public xcb_event_type response_type;
- public xcb_keycode_t detail;
- public UInt16 sequence;
- public xcb_timestamp_t time;
- public xcb_window_t root;
- public xcb_window_t evt;
- public xcb_window_t child;
- public UInt16 root_x;
- public UInt16 root_y;
- public UInt16 event_x;
- public UInt16 event_y;
- public UInt16 state;
- public byte same_screen;
- byte pad0;
- }
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_button_press_event_t {
- public xcb_event_type response_type;
- public xcb_button_t detail;
- public UInt16 sequence;
- public xcb_timestamp_t time;
- public xcb_window_t root;
- public xcb_window_t evt;
- public xcb_window_t child;
- public UInt16 root_x;
- public UInt16 root_y;
- public UInt16 event_x;
- public UInt16 event_y;
- public UInt16 state;
- public byte same_screen;
- byte pad0;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_motion_notify_event_t {
- public xcb_event_type response_type;
- public byte detail;
- public UInt16 sequence;
- public xcb_timestamp_t time;
- public xcb_window_t root;
- public xcb_window_t evt;
- public xcb_window_t child;
- public UInt16 root_x;
- public UInt16 root_y;
- public UInt16 event_x;
- public UInt16 event_y;
- public UInt16 state;
- public byte same_screen;
- byte pad0;
- }
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_iterator_t {
- public IntPtr data;
- public int rem;
- public int index;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_screen_t {
- public xcb_window_t root;
- public xcb_colormap_t default_colormap;
- public UInt32 white_pixel;
- public UInt32 black_pixel;
- public UInt32 current_input_masks;
- public UInt16 width_in_pixels;
- public UInt16 height_in_pixels;
- public UInt16 width_in_millimeters;
- public UInt16 height_in_millimeters;
- public UInt16 min_installed_maps;
- public UInt16 max_installed_maps;
- public xcb_visualid_t root_visual;
- public byte backing_stores;
- public byte save_unders;
- public byte root_depth;
- public byte allowed_depths_len;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_visualtype_t {
- public xcb_visualid_t visual_id;
- public byte _class;
- public byte bits_per_rgb_value;
- public UInt16 colormap_entries;
- public UInt32 red_mask;
- public UInt32 green_mask;
- public UInt32 blue_mask;
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
- byte[] pad;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct xcb_generic_reply_t{
- public byte response_type; /**< Type of the response */
- byte pad0; /**< Padding */
- public UInt16 sequence; /**< Sequence number */
- public UInt32 length; /**< Length of the response */
- }
- #endregion
-
-
- #region pinvoke XCB
- [DllImportAttribute ("xcb")]
- static extern IntPtr xcb_connect(string displayName, IntPtr screenNum);
- [DllImportAttribute("xcb")]
- static extern IntPtr xcb_get_setup(IntPtr connection);
- [DllImportAttribute("xcb")]
- static extern IntPtr xcb_flush(IntPtr connection);
- [DllImportAttribute("xcb")]
- static extern UInt32 xcb_generate_id(IntPtr connection);
-
- [DllImportAttribute("xcb")]
- static extern xcb_iterator_t xcb_setup_roots_iterator(IntPtr setup);
- [DllImportAttribute("xcb")]
- static extern xcb_iterator_t xcb_screen_allowed_depths_iterator(IntPtr scr);
- [DllImportAttribute("xcb")]
- static extern xcb_iterator_t xcb_depth_visuals_iterator(IntPtr depth);
-
- [DllImportAttribute("xcb")]
- static extern void xcb_screen_next(ref xcb_iterator_t scr_iterator);
- [DllImportAttribute("xcb")]
- static extern void xcb_depth_next(ref xcb_iterator_t depth_iterator);
- [DllImportAttribute("xcb")]
- static extern void xcb_visualtype_next(ref xcb_iterator_t depth_visual_iterator);
-
- [DllImportAttribute("xcb")]
- static extern xcb_void_cookie_t xcb_create_window(IntPtr connection, byte depth, xcb_window_t win, UInt32 parent,
- Int16 x, Int16 y, UInt16 width, UInt16 height, UInt16 border,
- xcb_window_class_t _class, xcb_visualid_t visual, xcb_cw_t mask, IntPtr valueList);
- [DllImportAttribute("xcb")]
- static extern xcb_void_cookie_t xcb_map_window(IntPtr conn, xcb_window_t window);
- [DllImportAttribute("xcb")]
- static extern void xcb_disconnect(IntPtr connection);
-
- [DllImportAttribute("xcb")]
- static extern IntPtr xcb_poll_for_event(IntPtr connection);
-
-
- #endregion
-
- Interface iFace;
-
- IntPtr conn;
-
- XKB.XCBKeyboard Keyboard;
-
-
- #region IBackend implementation
- public void Init (Interface _iFace)
- {
- iFace = _iFace;
-
- conn = xcb_connect (null, IntPtr.Zero);
-
-
- Keyboard = new XKB.XCBKeyboard (conn, iFace);
-
- xcb_iterator_t scr_it = xcb_setup_roots_iterator (xcb_get_setup (conn));
- IntPtr screen = scr_it.data;
-
- xcb_screen_t scr = (xcb_screen_t)Marshal.PtrToStructure (screen, typeof(xcb_screen_t));
-
- xcb_window_t win = xcb_generate_id (conn);
-
- xcb_cw_t mask = xcb_cw_t.BACK_PIXEL | xcb_cw_t.EVENT_MASK;
- uint[] values = {
- scr.black_pixel,
- (uint)(
- xcb_event_mask_t.EXPOSURE |
- xcb_event_mask_t.POINTER_MOTION |
- xcb_event_mask_t.BUTTON_PRESS |
- xcb_event_mask_t.BUTTON_RELEASE |
- xcb_event_mask_t.KEY_PRESS |
- xcb_event_mask_t.KEY_RELEASE
- )
- };
-
- IntPtr intPtr = IntPtr.Zero;
-
- unsafe
- {
- fixed(uint* pValues = values)
- intPtr = new IntPtr((void *) pValues);
- xcb_create_window (conn, XCB_COPY_FROM_PARENT, win, scr.root, 0,0,(ushort)iFace.ClientRectangle.Width, (ushort)iFace.ClientRectangle.Height,0,
- xcb_window_class_t.INPUT_OUTPUT, scr.root_visual, mask, intPtr);
- }
-
-
- xcb_map_window (conn, win);
-
- xcb_flush (conn);
-
-
- IntPtr visual = findVisual (scr_it, scr.root_visual);
-
- loadCursors ();
-
- iFace.surf = new Crow.Cairo.XcbSurface (conn, win, visual, iFace.ClientRectangle.Width, iFace.ClientRectangle.Height);
- }
-
- public void CleanUp ()
- {
- Keyboard.Destroy ();
-
- xcb_disconnect (conn);
- }
- public void Flush () {
- xcb_flush (conn);
- }
-
- public void ProcessEvents ()
- {
- IntPtr evtPtr = xcb_poll_for_event (conn);
- if (evtPtr == IntPtr.Zero)
- return;
- xcb_event_t evt = (xcb_event_t)Marshal.PtrToStructure (evtPtr, typeof(xcb_event_t));
-
- switch (evt.response_type) {
- case xcb_event_type.EXPOSE:
- if (evt.width > 0)
- iFace.ProcessResize (new Rectangle (0, 0, evt.width, evt.height));
- break;
- case xcb_event_type.MOTION_NOTIFY:
- iFace.ProcessMouseMove (evt.event_x, evt.event_y);
- break;
- case xcb_event_type.BUTTON_PRESS:
- if (evt.button == xcb_button_t.WheelUp)
- iFace.ProcessMouseWheelChanged (Interface.WheelIncrement);
- else if(evt.button == xcb_button_t.WheelDown)
- iFace.ProcessMouseWheelChanged (-Interface.WheelIncrement);
- else
- iFace.ProcessMouseButtonDown ((MouseButton)(evt.detail - 1));
- break;
- case xcb_event_type.BUTTON_RELEASE:
- if (evt.button == xcb_button_t.WheelUp || evt.button == xcb_button_t.WheelDown)
- break;
- iFace.ProcessMouseButtonUp ((MouseButton)(evt.detail - 1));
- break;
- case xcb_event_type.KEY_PRESS:
- Keyboard.HandleEvent (evt.keycode, true);
- break;
- case xcb_event_type.KEY_RELEASE:
- Keyboard.HandleEvent (evt.keycode, false);
- break;
- default:
- Console.WriteLine ("unknown event");
- break;
- }
- }
- public bool IsDown (Key key) {
- return false;
- }
- public bool Shift {
- get { return Keyboard.Shift; }
- }
- public bool Ctrl {
- get { return Keyboard.Ctrl; }
- }
- public bool Alt {
- get { return Keyboard.Alt;}
- }
- #endregion
-
- void loadCursors ()
- {
- //Load cursors
- XCursor.Cross = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.cross").Cursors [0];
- XCursor.Default = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.arrow").Cursors [0];
- XCursor.NW = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.top_left_corner").Cursors [0];
- XCursor.NE = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.top_right_corner").Cursors [0];
- XCursor.SW = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.bottom_left_corner").Cursors [0];
- XCursor.SE = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.bottom_right_corner").Cursors [0];
- XCursor.H = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.sb_h_double_arrow").Cursors [0];
- XCursor.V = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.sb_v_double_arrow").Cursors [0];
- XCursor.Text = XCursorFile.Load (iFace, "#Crow.Images.Icons.Cursors.ibeam").Cursors [0];
- }
-
- static IntPtr findVisual (xcb_iterator_t scr_it, xcb_visualid_t visualId){
- for (; scr_it.rem > 0; xcb_screen_next (ref scr_it)) {
- xcb_iterator_t depth_it = xcb_screen_allowed_depths_iterator (scr_it.data);
- for (; depth_it.rem > 0; xcb_depth_next (ref depth_it)) {
- xcb_iterator_t visual_it = xcb_depth_visuals_iterator (depth_it.data);
- for (; visual_it.rem > 0; xcb_visualtype_next (ref visual_it)) {
- xcb_visualtype_t visual = (xcb_visualtype_t)Marshal.PtrToStructure (visual_it.data, typeof(xcb_visualtype_t));
- if (visualId == visual.visual_id)
- return visual_it.data;
- }
- }
- }
- return IntPtr.Zero;
- }
-
- public void SetCursor (MouseCursors newCur)
- {
- //throw new NotImplementedException ();
- }
-
- public void SetCursorPosition (int x, int y)
- {
- throw new NotImplementedException ();
- }
- }
-}
-
+++ /dev/null
-//
-// XCBKeyboard.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.XKB
-{
- using xkb_keycode_t = System.UInt32;
- using xkb_mod_index_t = System.UInt32;
-
- public class XCBKeyboard
- {
- enum xkb_keysym : uint {
- NoSymbol = 0x000000,
- VoidSymbol = 0xffffff,
- BackSpace = 0xff08,
- Tab = 0xff09,
- Linefeed = 0xff0a,
- Clear = 0xff0b,
- Return = 0xff0d,
- Pause = 0xff13,
- Scroll_Lock = 0xff14,
- Sys_Req = 0xff15,
- Escape = 0xff1b,
- Delete = 0xffff,
- Multi_key = 0xff20,
- Codeinput = 0xff37,
- SingleCandidate = 0xff3c,
- MultipleCandidate = 0xff3d,
- PreviousCandidate = 0xff3e,
- Kanji = 0xff21,
- Muhenkan = 0xff22,
- Henkan_Mode = 0xff23,
- Henkan = 0xff23,
- Romaji = 0xff24,
- Hiragana = 0xff25,
- Katakana = 0xff26,
- Hiragana_Katakana = 0xff27,
- Zenkaku = 0xff28,
- Hankaku = 0xff29,
- Zenkaku_Hankaku = 0xff2a,
- Touroku = 0xff2b,
- Massyo = 0xff2c,
- Kana_Lock = 0xff2d,
- Kana_Shift = 0xff2e,
- Eisu_Shift = 0xff2f,
- Eisu_toggle = 0xff30,
- Kanji_Bangou = 0xff37,
- Zen_Koho = 0xff3d,
- Mae_Koho = 0xff3e,
- Home = 0xff50,
- Left = 0xff51,
- Up = 0xff52,
- Right = 0xff53,
- Down = 0xff54,
- Prior = 0xff55,
- Page_Up = 0xff55,
- Next = 0xff56,
- Page_Down = 0xff56,
- End = 0xff57,
- Begin = 0xff58,
- Select = 0xff60,
- Print = 0xff61,
- Execute = 0xff62,
- Insert = 0xff63,
- Undo = 0xff65,
- Redo = 0xff66,
- Menu = 0xff67,
- Find = 0xff68,
- Cancel = 0xff69,
- Help = 0xff6a,
- Break = 0xff6b,
- Mode_switch = 0xff7e,
- script_switch = 0xff7e,
- Num_Lock = 0xff7f,
- KP_Space = 0xff80,
- KP_Tab = 0xff89,
- KP_Enter = 0xff8d,
- KP_F1 = 0xff91,
- KP_F2 = 0xff92,
- KP_F3 = 0xff93,
- KP_F4 = 0xff94,
- KP_Home = 0xff95,
- KP_Left = 0xff96,
- KP_Up = 0xff97,
- KP_Right = 0xff98,
- KP_Down = 0xff99,
- KP_Prior = 0xff9a,
- KP_Page_Up = 0xff9a,
- KP_Next = 0xff9b,
- KP_Page_Down = 0xff9b,
- KP_End = 0xff9c,
- KP_Begin = 0xff9d,
- KP_Insert = 0xff9e,
- KP_Delete = 0xff9f,
- KP_Equal = 0xffbd,
- KP_Multiply = 0xffaa,
- KP_Add = 0xffab,
- KP_Separator = 0xffac,
- KP_Subtract = 0xffad,
- KP_Decimal = 0xffae,
- KP_Divide = 0xffaf,
- KP_0 = 0xffb0,
- KP_1 = 0xffb1,
- KP_2 = 0xffb2,
- KP_3 = 0xffb3,
- KP_4 = 0xffb4,
- KP_5 = 0xffb5,
- KP_6 = 0xffb6,
- KP_7 = 0xffb7,
- KP_8 = 0xffb8,
- KP_9 = 0xffb9,
- F1 = 0xffbe,
- F2 = 0xffbf,
- F3 = 0xffc0,
- F4 = 0xffc1,
- F5 = 0xffc2,
- F6 = 0xffc3,
- F7 = 0xffc4,
- F8 = 0xffc5,
- F9 = 0xffc6,
- F10 = 0xffc7,
- F11 = 0xffc8,
- L1 = 0xffc8,
- F12 = 0xffc9,
- L2 = 0xffc9,
- F13 = 0xffca,
- L3 = 0xffca,
- F14 = 0xffcb,
- L4 = 0xffcb,
- F15 = 0xffcc,
- L5 = 0xffcc,
- F16 = 0xffcd,
- L6 = 0xffcd,
- F17 = 0xffce,
- L7 = 0xffce,
- F18 = 0xffcf,
- L8 = 0xffcf,
- F19 = 0xffd0,
- L9 = 0xffd0,
- F20 = 0xffd1,
- L10 = 0xffd1,
- F21 = 0xffd2,
- R1 = 0xffd2,
- F22 = 0xffd3,
- R2 = 0xffd3,
- F23 = 0xffd4,
- R3 = 0xffd4,
- F24 = 0xffd5,
- R4 = 0xffd5,
- F25 = 0xffd6,
- R5 = 0xffd6,
- F26 = 0xffd7,
- R6 = 0xffd7,
- F27 = 0xffd8,
- R7 = 0xffd8,
- F28 = 0xffd9,
- R8 = 0xffd9,
- F29 = 0xffda,
- R9 = 0xffda,
- F30 = 0xffdb,
- R10 = 0xffdb,
- F31 = 0xffdc,
- R11 = 0xffdc,
- F32 = 0xffdd,
- R12 = 0xffdd,
- F33 = 0xffde,
- R13 = 0xffde,
- F34 = 0xffdf,
- R14 = 0xffdf,
- F35 = 0xffe0,
- R15 = 0xffe0,
- Shift_L = 0xffe1,
- Shift_R = 0xffe2,
- Control_L = 0xffe3,
- Control_R = 0xffe4,
- Caps_Lock = 0xffe5,
- Shift_Lock = 0xffe6,
- Meta_L = 0xffe7,
- Meta_R = 0xffe8,
- Alt_L = 0xffe9,
- Alt_R = 0xffea,
- Super_L = 0xffeb,
- Super_R = 0xffec,
- Hyper_L = 0xffed,
- Hyper_R = 0xffee,
- ISO_Lock = 0xfe01,
- ISO_Level2_Latch = 0xfe02,
- ISO_Level3_Shift = 0xfe03,
- ISO_Level3_Latch = 0xfe04,
- ISO_Level3_Lock = 0xfe05,
- ISO_Level5_Shift = 0xfe11,
- ISO_Level5_Latch = 0xfe12,
- ISO_Level5_Lock = 0xfe13,
- ISO_Group_Shift = 0xff7e,
- ISO_Group_Latch = 0xfe06,
- ISO_Group_Lock = 0xfe07,
- ISO_Next_Group = 0xfe08,
- ISO_Next_Group_Lock = 0xfe09,
- ISO_Prev_Group = 0xfe0a,
- ISO_Prev_Group_Lock = 0xfe0b,
- ISO_First_Group = 0xfe0c,
- ISO_First_Group_Lock = 0xfe0d,
- ISO_Last_Group = 0xfe0e,
- ISO_Last_Group_Lock = 0xfe0f,
- ISO_Left_Tab = 0xfe20,
- ISO_Move_Line_Up = 0xfe21,
- ISO_Move_Line_Down = 0xfe22,
- ISO_Partial_Line_Up = 0xfe23,
- ISO_Partial_Line_Down = 0xfe24,
- ISO_Partial_Space_Left = 0xfe25,
- ISO_Partial_Space_Right = 0xfe26,
- ISO_Set_Margin_Left = 0xfe27,
- ISO_Set_Margin_Right = 0xfe28,
- ISO_Release_Margin_Left = 0xfe29,
- ISO_Release_Margin_Right = 0xfe2a,
- ISO_Release_Both_Margins = 0xfe2b,
- ISO_Fast_Cursor_Left = 0xfe2c,
- ISO_Fast_Cursor_Right = 0xfe2d,
- ISO_Fast_Cursor_Up = 0xfe2e,
- ISO_Fast_Cursor_Down = 0xfe2f,
- ISO_Continuous_Underline = 0xfe30,
- ISO_Discontinuous_Underline = 0xfe31,
- ISO_Emphasize = 0xfe32,
- ISO_Center_Object = 0xfe33,
- ISO_Enter = 0xfe34,
- dead_grave = 0xfe50,
- dead_acute = 0xfe51,
- dead_circumflex = 0xfe52,
- dead_tilde = 0xfe53,
- dead_perispomeni = 0xfe53,
- dead_macron = 0xfe54,
- dead_breve = 0xfe55,
- dead_abovedot = 0xfe56,
- dead_diaeresis = 0xfe57,
- dead_abovering = 0xfe58,
- dead_doubleacute = 0xfe59,
- dead_caron = 0xfe5a,
- dead_cedilla = 0xfe5b,
- dead_ogonek = 0xfe5c,
- dead_iota = 0xfe5d,
- dead_voiced_sound = 0xfe5e,
- dead_semivoiced_sound = 0xfe5f,
- dead_belowdot = 0xfe60,
- dead_hook = 0xfe61,
- dead_horn = 0xfe62,
- dead_stroke = 0xfe63,
- dead_abovecomma = 0xfe64,
- dead_psili = 0xfe64,
- dead_abovereversedcomma = 0xfe65,
- dead_dasia = 0xfe65,
- dead_doublegrave = 0xfe66,
- dead_belowring = 0xfe67,
- dead_belowmacron = 0xfe68,
- dead_belowcircumflex = 0xfe69,
- dead_belowtilde = 0xfe6a,
- dead_belowbreve = 0xfe6b,
- dead_belowdiaeresis = 0xfe6c,
- dead_invertedbreve = 0xfe6d,
- dead_belowcomma = 0xfe6e,
- dead_currency = 0xfe6f,
- dead_lowline = 0xfe90,
- dead_aboveverticalline = 0xfe91,
- dead_belowverticalline = 0xfe92,
- dead_longsolidusoverlay = 0xfe93,
- dead_a = 0xfe80,
- dead_A = 0xfe81,
- dead_e = 0xfe82,
- dead_E = 0xfe83,
- dead_i = 0xfe84,
- dead_I = 0xfe85,
- dead_o = 0xfe86,
- dead_O = 0xfe87,
- dead_u = 0xfe88,
- dead_U = 0xfe89,
- dead_small_schwa = 0xfe8a,
- dead_capital_schwa = 0xfe8b,
- dead_greek = 0xfe8c,
- First_Virtual_Screen = 0xfed0,
- Prev_Virtual_Screen = 0xfed1,
- Next_Virtual_Screen = 0xfed2,
- Last_Virtual_Screen = 0xfed4,
- Terminate_Server = 0xfed5,
- AccessX_Enable = 0xfe70,
- AccessX_Feedback_Enable = 0xfe71,
- RepeatKeys_Enable = 0xfe72,
- SlowKeys_Enable = 0xfe73,
- BounceKeys_Enable = 0xfe74,
- StickyKeys_Enable = 0xfe75,
- MouseKeys_Enable = 0xfe76,
- MouseKeys_Accel_Enable = 0xfe77,
- Overlay1_Enable = 0xfe78,
- Overlay2_Enable = 0xfe79,
- AudibleBell_Enable = 0xfe7a,
- Pointer_Left = 0xfee0,
- Pointer_Right = 0xfee1,
- Pointer_Up = 0xfee2,
- Pointer_Down = 0xfee3,
- Pointer_UpLeft = 0xfee4,
- Pointer_UpRight = 0xfee5,
- Pointer_DownLeft = 0xfee6,
- Pointer_DownRight = 0xfee7,
- Pointer_Button_Dflt = 0xfee8,
- Pointer_Button1 = 0xfee9,
- Pointer_Button2 = 0xfeea,
- Pointer_Button3 = 0xfeeb,
- Pointer_Button4 = 0xfeec,
- Pointer_Button5 = 0xfeed,
- Pointer_DblClick_Dflt = 0xfeee,
- Pointer_DblClick1 = 0xfeef,
- Pointer_DblClick2 = 0xfef0,
- Pointer_DblClick3 = 0xfef1,
- Pointer_DblClick4 = 0xfef2,
- Pointer_DblClick5 = 0xfef3,
- Pointer_Drag_Dflt = 0xfef4,
- Pointer_Drag1 = 0xfef5,
- Pointer_Drag2 = 0xfef6,
- Pointer_Drag3 = 0xfef7,
- Pointer_Drag4 = 0xfef8,
- Pointer_Drag5 = 0xfefd,
- Pointer_EnableKeys = 0xfef9,
- Pointer_Accelerate = 0xfefa,
- Pointer_DfltBtnNext = 0xfefb,
- Pointer_DfltBtnPrev = 0xfefc,
- ch = 0xfea0,
- Ch = 0xfea1,
- CH = 0xfea2,
- c_h = 0xfea3,
- C_h = 0xfea4,
- C_H = 0xfea5,
- key_3270_Duplicate = 0xfd01,
- key_3270_FieldMark = 0xfd02,
- key_3270_Right2 = 0xfd03,
- key_3270_Left2 = 0xfd04,
- key_3270_BackTab = 0xfd05,
- key_3270_EraseEOF = 0xfd06,
- key_3270_EraseInput = 0xfd07,
- key_3270_Reset = 0xfd08,
- key_3270_Quit = 0xfd09,
- key_3270_PA1 = 0xfd0a,
- key_3270_PA2 = 0xfd0b,
- key_3270_PA3 = 0xfd0c,
- key_3270_Test = 0xfd0d,
- key_3270_Attn = 0xfd0e,
- key_3270_CursorBlink = 0xfd0f,
- key_3270_AltCursor = 0xfd10,
- key_3270_KeyClick = 0xfd11,
- key_3270_Jump = 0xfd12,
- key_3270_Ident = 0xfd13,
- key_3270_Rule = 0xfd14,
- key_3270_Copy = 0xfd15,
- key_3270_Play = 0xfd16,
- key_3270_Setup = 0xfd17,
- key_3270_Record = 0xfd18,
- key_3270_ChangeScreen = 0xfd19,
- key_3270_DeleteWord = 0xfd1a,
- key_3270_ExSelect = 0xfd1b,
- key_3270_CursorSelect = 0xfd1c,
- key_3270_PrintScreen = 0xfd1d,
- key_3270_Enter = 0xfd1e,
- space = 0x0020,
- exclam = 0x0021,
- quotedbl = 0x0022,
- numbersign = 0x0023,
- dollar = 0x0024,
- percent = 0x0025,
- ampersand = 0x0026,
- apostrophe = 0x0027,
- quoteright = 0x0027,
- parenleft = 0x0028,
- parenright = 0x0029,
- asterisk = 0x002a,
- plus = 0x002b,
- comma = 0x002c,
- minus = 0x002d,
- period = 0x002e,
- slash = 0x002f,
- key_0 = 0x0030,
- key_1 = 0x0031,
- key_2 = 0x0032,
- key_3 = 0x0033,
- key_4 = 0x0034,
- key_5 = 0x0035,
- key_6 = 0x0036,
- key_7 = 0x0037,
- key_8 = 0x0038,
- key_9 = 0x0039,
- colon = 0x003a,
- semicolon = 0x003b,
- less = 0x003c,
- equal = 0x003d,
- greater = 0x003e,
- question = 0x003f,
- at = 0x0040,
- A = 0x0041,
- B = 0x0042,
- C = 0x0043,
- D = 0x0044,
- E = 0x0045,
- F = 0x0046,
- G = 0x0047,
- H = 0x0048,
- I = 0x0049,
- J = 0x004a,
- K = 0x004b,
- L = 0x004c,
- M = 0x004d,
- N = 0x004e,
- O = 0x004f,
- P = 0x0050,
- Q = 0x0051,
- R = 0x0052,
- S = 0x0053,
- T = 0x0054,
- U = 0x0055,
- V = 0x0056,
- W = 0x0057,
- X = 0x0058,
- Y = 0x0059,
- Z = 0x005a,
- bracketleft = 0x005b,
- backslash = 0x005c,
- bracketright = 0x005d,
- asciicircum = 0x005e,
- underscore = 0x005f,
- grave = 0x0060,
- quoteleft = 0x0060,
- a = 0x0061,
- b = 0x0062,
- c = 0x0063,
- d = 0x0064,
- e = 0x0065,
- f = 0x0066,
- g = 0x0067,
- h = 0x0068,
- i = 0x0069,
- j = 0x006a,
- k = 0x006b,
- l = 0x006c,
- m = 0x006d,
- n = 0x006e,
- o = 0x006f,
- p = 0x0070,
- q = 0x0071,
- r = 0x0072,
- s = 0x0073,
- t = 0x0074,
- u = 0x0075,
- v = 0x0076,
- w = 0x0077,
- x = 0x0078,
- y = 0x0079,
- z = 0x007a,
- braceleft = 0x007b,
- bar = 0x007c,
- braceright = 0x007d,
- asciitilde = 0x007e,
- nobreakspace = 0x00a0,
- exclamdown = 0x00a1,
- cent = 0x00a2,
- sterling = 0x00a3,
- currency = 0x00a4,
- yen = 0x00a5,
- brokenbar = 0x00a6,
- section = 0x00a7,
- diaeresis = 0x00a8,
- copyright = 0x00a9,
- ordfeminine = 0x00aa,
- guillemotleft = 0x00ab,
- notsign = 0x00ac,
- hyphen = 0x00ad,
- registered = 0x00ae,
- macron = 0x00af,
- degree = 0x00b0,
- plusminus = 0x00b1,
- twosuperior = 0x00b2,
- threesuperior = 0x00b3,
- acute = 0x00b4,
- mu = 0x00b5,
- paragraph = 0x00b6,
- periodcentered = 0x00b7,
- cedilla = 0x00b8,
- onesuperior = 0x00b9,
- masculine = 0x00ba,
- guillemotright = 0x00bb,
- onequarter = 0x00bc,
- onehalf = 0x00bd,
- threequarters = 0x00be,
- questiondown = 0x00bf,
- Agrave = 0x00c0,
- Aacute = 0x00c1,
- Acircumflex = 0x00c2,
- Atilde = 0x00c3,
- Adiaeresis = 0x00c4,
- Aring = 0x00c5,
- AE = 0x00c6,
- Ccedilla = 0x00c7,
- Egrave = 0x00c8,
- Eacute = 0x00c9,
- Ecircumflex = 0x00ca,
- Ediaeresis = 0x00cb,
- Igrave = 0x00cc,
- Iacute = 0x00cd,
- Icircumflex = 0x00ce,
- Idiaeresis = 0x00cf,
- ETH = 0x00d0,
- Eth = 0x00d0,
- Ntilde = 0x00d1,
- Ograve = 0x00d2,
- Oacute = 0x00d3,
- Ocircumflex = 0x00d4,
- Otilde = 0x00d5,
- Odiaeresis = 0x00d6,
- multiply = 0x00d7,
- Oslash = 0x00d8,
- Ooblique = 0x00d8,
- Ugrave = 0x00d9,
- Uacute = 0x00da,
- Ucircumflex = 0x00db,
- Udiaeresis = 0x00dc,
- Yacute = 0x00dd,
- THORN = 0x00de,
- Thorn = 0x00de,
- ssharp = 0x00df,
- agrave = 0x00e0,
- aacute = 0x00e1,
- acircumflex = 0x00e2,
- atilde = 0x00e3,
- adiaeresis = 0x00e4,
- aring = 0x00e5,
- ae = 0x00e6,
- ccedilla = 0x00e7,
- egrave = 0x00e8,
- eacute = 0x00e9,
- ecircumflex = 0x00ea,
- ediaeresis = 0x00eb,
- igrave = 0x00ec,
- iacute = 0x00ed,
- icircumflex = 0x00ee,
- idiaeresis = 0x00ef,
- eth = 0x00f0,
- ntilde = 0x00f1,
- ograve = 0x00f2,
- oacute = 0x00f3,
- ocircumflex = 0x00f4,
- otilde = 0x00f5,
- odiaeresis = 0x00f6,
- division = 0x00f7,
- oslash = 0x00f8,
- ooblique = 0x00f8,
- ugrave = 0x00f9,
- uacute = 0x00fa,
- ucircumflex = 0x00fb,
- udiaeresis = 0x00fc,
- yacute = 0x00fd,
- thorn = 0x00fe,
- ydiaeresis = 0x00ff,
- Aogonek = 0x01a1,
- breve = 0x01a2,
- Lstroke = 0x01a3,
- Lcaron = 0x01a5,
- Sacute = 0x01a6,
- Scaron = 0x01a9,
- Scedilla = 0x01aa,
- Tcaron = 0x01ab,
- Zacute = 0x01ac,
- Zcaron = 0x01ae,
- Zabovedot = 0x01af,
- aogonek = 0x01b1,
- ogonek = 0x01b2,
- lstroke = 0x01b3,
- lcaron = 0x01b5,
- sacute = 0x01b6,
- caron = 0x01b7,
- scaron = 0x01b9,
- scedilla = 0x01ba,
- tcaron = 0x01bb,
- zacute = 0x01bc,
- doubleacute = 0x01bd,
- zcaron = 0x01be,
- zabovedot = 0x01bf,
- Racute = 0x01c0,
- Abreve = 0x01c3,
- Lacute = 0x01c5,
- Cacute = 0x01c6,
- Ccaron = 0x01c8,
- Eogonek = 0x01ca,
- Ecaron = 0x01cc,
- Dcaron = 0x01cf,
- Dstroke = 0x01d0,
- Nacute = 0x01d1,
- Ncaron = 0x01d2,
- Odoubleacute = 0x01d5,
- Rcaron = 0x01d8,
- Uring = 0x01d9,
- Udoubleacute = 0x01db,
- Tcedilla = 0x01de,
- racute = 0x01e0,
- abreve = 0x01e3,
- lacute = 0x01e5,
- cacute = 0x01e6,
- ccaron = 0x01e8,
- eogonek = 0x01ea,
- ecaron = 0x01ec,
- dcaron = 0x01ef,
- dstroke = 0x01f0,
- nacute = 0x01f1,
- ncaron = 0x01f2,
- odoubleacute = 0x01f5,
- rcaron = 0x01f8,
- uring = 0x01f9,
- udoubleacute = 0x01fb,
- tcedilla = 0x01fe,
- abovedot = 0x01ff,
- Hstroke = 0x02a1,
- Hcircumflex = 0x02a6,
- Iabovedot = 0x02a9,
- Gbreve = 0x02ab,
- Jcircumflex = 0x02ac,
- hstroke = 0x02b1,
- hcircumflex = 0x02b6,
- idotless = 0x02b9,
- gbreve = 0x02bb,
- jcircumflex = 0x02bc,
- Cabovedot = 0x02c5,
- Ccircumflex = 0x02c6,
- Gabovedot = 0x02d5,
- Gcircumflex = 0x02d8,
- Ubreve = 0x02dd,
- Scircumflex = 0x02de,
- cabovedot = 0x02e5,
- ccircumflex = 0x02e6,
- gabovedot = 0x02f5,
- gcircumflex = 0x02f8,
- ubreve = 0x02fd,
- scircumflex = 0x02fe,
- kra = 0x03a2,
- kappa = 0x03a2,
- Rcedilla = 0x03a3,
- Itilde = 0x03a5,
- Lcedilla = 0x03a6,
- Emacron = 0x03aa,
- Gcedilla = 0x03ab,
- Tslash = 0x03ac,
- rcedilla = 0x03b3,
- itilde = 0x03b5,
- lcedilla = 0x03b6,
- emacron = 0x03ba,
- gcedilla = 0x03bb,
- tslash = 0x03bc,
- ENG = 0x03bd,
- eng = 0x03bf,
- Amacron = 0x03c0,
- Iogonek = 0x03c7,
- Eabovedot = 0x03cc,
- Imacron = 0x03cf,
- Ncedilla = 0x03d1,
- Omacron = 0x03d2,
- Kcedilla = 0x03d3,
- Uogonek = 0x03d9,
- Utilde = 0x03dd,
- Umacron = 0x03de,
- amacron = 0x03e0,
- iogonek = 0x03e7,
- eabovedot = 0x03ec,
- imacron = 0x03ef,
- ncedilla = 0x03f1,
- omacron = 0x03f2,
- kcedilla = 0x03f3,
- uogonek = 0x03f9,
- utilde = 0x03fd,
- umacron = 0x03fe,
- Wcircumflex = 0x1000174,
- wcircumflex = 0x1000175,
- Ycircumflex = 0x1000176,
- ycircumflex = 0x1000177,
- Babovedot = 0x1001e02,
- babovedot = 0x1001e03,
- Dabovedot = 0x1001e0a,
- dabovedot = 0x1001e0b,
- Fabovedot = 0x1001e1e,
- fabovedot = 0x1001e1f,
- Mabovedot = 0x1001e40,
- mabovedot = 0x1001e41,
- Pabovedot = 0x1001e56,
- pabovedot = 0x1001e57,
- Sabovedot = 0x1001e60,
- sabovedot = 0x1001e61,
- Tabovedot = 0x1001e6a,
- tabovedot = 0x1001e6b,
- Wgrave = 0x1001e80,
- wgrave = 0x1001e81,
- Wacute = 0x1001e82,
- wacute = 0x1001e83,
- Wdiaeresis = 0x1001e84,
- wdiaeresis = 0x1001e85,
- Ygrave = 0x1001ef2,
- ygrave = 0x1001ef3,
- OE = 0x13bc,
- oe = 0x13bd,
- Ydiaeresis = 0x13be,
- overline = 0x047e,
- kana_fullstop = 0x04a1,
- kana_openingbracket = 0x04a2,
- kana_closingbracket = 0x04a3,
- kana_comma = 0x04a4,
- kana_conjunctive = 0x04a5,
- kana_middledot = 0x04a5,
- kana_WO = 0x04a6,
- kana_a = 0x04a7,
- kana_i = 0x04a8,
- kana_u = 0x04a9,
- kana_e = 0x04aa,
- kana_o = 0x04ab,
- kana_ya = 0x04ac,
- kana_yu = 0x04ad,
- kana_yo = 0x04ae,
- kana_tsu = 0x04af,
- kana_tu = 0x04af,
- prolongedsound = 0x04b0,
- kana_A = 0x04b1,
- kana_I = 0x04b2,
- kana_U = 0x04b3,
- kana_E = 0x04b4,
- kana_O = 0x04b5,
- kana_KA = 0x04b6,
- kana_KI = 0x04b7,
- kana_KU = 0x04b8,
- kana_KE = 0x04b9,
- kana_KO = 0x04ba,
- kana_SA = 0x04bb,
- kana_SHI = 0x04bc,
- kana_SU = 0x04bd,
- kana_SE = 0x04be,
- kana_SO = 0x04bf,
- kana_TA = 0x04c0,
- kana_CHI = 0x04c1,
- kana_TI = 0x04c1,
- kana_TSU = 0x04c2,
- kana_TU = 0x04c2,
- kana_TE = 0x04c3,
- kana_TO = 0x04c4,
- kana_NA = 0x04c5,
- kana_NI = 0x04c6,
- kana_NU = 0x04c7,
- kana_NE = 0x04c8,
- kana_NO = 0x04c9,
- kana_HA = 0x04ca,
- kana_HI = 0x04cb,
- kana_FU = 0x04cc,
- kana_HU = 0x04cc,
- kana_HE = 0x04cd,
- kana_HO = 0x04ce,
- kana_MA = 0x04cf,
- kana_MI = 0x04d0,
- kana_MU = 0x04d1,
- kana_ME = 0x04d2,
- kana_MO = 0x04d3,
- kana_YA = 0x04d4,
- kana_YU = 0x04d5,
- kana_YO = 0x04d6,
- kana_RA = 0x04d7,
- kana_RI = 0x04d8,
- kana_RU = 0x04d9,
- kana_RE = 0x04da,
- kana_RO = 0x04db,
- kana_WA = 0x04dc,
- kana_N = 0x04dd,
- voicedsound = 0x04de,
- semivoicedsound = 0x04df,
- kana_switch = 0xff7e,
- Farsi_0 = 0x10006f0,
- Farsi_1 = 0x10006f1,
- Farsi_2 = 0x10006f2,
- Farsi_3 = 0x10006f3,
- Farsi_4 = 0x10006f4,
- Farsi_5 = 0x10006f5,
- Farsi_6 = 0x10006f6,
- Farsi_7 = 0x10006f7,
- Farsi_8 = 0x10006f8,
- Farsi_9 = 0x10006f9,
- Arabic_percent = 0x100066a,
- Arabic_superscript_alef = 0x1000670,
- Arabic_tteh = 0x1000679,
- Arabic_peh = 0x100067e,
- Arabic_tcheh = 0x1000686,
- Arabic_ddal = 0x1000688,
- Arabic_rreh = 0x1000691,
- Arabic_comma = 0x05ac,
- Arabic_fullstop = 0x10006d4,
- Arabic_0 = 0x1000660,
- Arabic_1 = 0x1000661,
- Arabic_2 = 0x1000662,
- Arabic_3 = 0x1000663,
- Arabic_4 = 0x1000664,
- Arabic_5 = 0x1000665,
- Arabic_6 = 0x1000666,
- Arabic_7 = 0x1000667,
- Arabic_8 = 0x1000668,
- Arabic_9 = 0x1000669,
- Arabic_semicolon = 0x05bb,
- Arabic_question_mark = 0x05bf,
- Arabic_hamza = 0x05c1,
- Arabic_maddaonalef = 0x05c2,
- Arabic_hamzaonalef = 0x05c3,
- Arabic_hamzaonwaw = 0x05c4,
- Arabic_hamzaunderalef = 0x05c5,
- Arabic_hamzaonyeh = 0x05c6,
- Arabic_alef = 0x05c7,
- Arabic_beh = 0x05c8,
- Arabic_tehmarbuta = 0x05c9,
- Arabic_teh = 0x05ca,
- Arabic_theh = 0x05cb,
- Arabic_jeem = 0x05cc,
- Arabic_hah = 0x05cd,
- Arabic_khah = 0x05ce,
- Arabic_dal = 0x05cf,
- Arabic_thal = 0x05d0,
- Arabic_ra = 0x05d1,
- Arabic_zain = 0x05d2,
- Arabic_seen = 0x05d3,
- Arabic_sheen = 0x05d4,
- Arabic_sad = 0x05d5,
- Arabic_dad = 0x05d6,
- Arabic_tah = 0x05d7,
- Arabic_zah = 0x05d8,
- Arabic_ain = 0x05d9,
- Arabic_ghain = 0x05da,
- Arabic_tatweel = 0x05e0,
- Arabic_feh = 0x05e1,
- Arabic_qaf = 0x05e2,
- Arabic_kaf = 0x05e3,
- Arabic_lam = 0x05e4,
- Arabic_meem = 0x05e5,
- Arabic_noon = 0x05e6,
- Arabic_ha = 0x05e7,
- Arabic_heh = 0x05e7,
- Arabic_waw = 0x05e8,
- Arabic_alefmaksura = 0x05e9,
- Arabic_yeh = 0x05ea,
- Arabic_fathatan = 0x05eb,
- Arabic_dammatan = 0x05ec,
- Arabic_kasratan = 0x05ed,
- Arabic_fatha = 0x05ee,
- Arabic_damma = 0x05ef,
- Arabic_kasra = 0x05f0,
- Arabic_shadda = 0x05f1,
- Arabic_sukun = 0x05f2,
- Arabic_madda_above = 0x1000653,
- Arabic_hamza_above = 0x1000654,
- Arabic_hamza_below = 0x1000655,
- Arabic_jeh = 0x1000698,
- Arabic_veh = 0x10006a4,
- Arabic_keheh = 0x10006a9,
- Arabic_gaf = 0x10006af,
- Arabic_noon_ghunna = 0x10006ba,
- Arabic_heh_doachashmee = 0x10006be,
- Farsi_yeh = 0x10006cc,
- Arabic_farsi_yeh = 0x10006cc,
- Arabic_yeh_baree = 0x10006d2,
- Arabic_heh_goal = 0x10006c1,
- Arabic_switch = 0xff7e,
- Cyrillic_GHE_bar = 0x1000492,
- Cyrillic_ghe_bar = 0x1000493,
- Cyrillic_ZHE_descender = 0x1000496,
- Cyrillic_zhe_descender = 0x1000497,
- Cyrillic_KA_descender = 0x100049a,
- Cyrillic_ka_descender = 0x100049b,
- Cyrillic_KA_vertstroke = 0x100049c,
- Cyrillic_ka_vertstroke = 0x100049d,
- Cyrillic_EN_descender = 0x10004a2,
- Cyrillic_en_descender = 0x10004a3,
- Cyrillic_U_straight = 0x10004ae,
- Cyrillic_u_straight = 0x10004af,
- Cyrillic_U_straight_bar = 0x10004b0,
- Cyrillic_u_straight_bar = 0x10004b1,
- Cyrillic_HA_descender = 0x10004b2,
- Cyrillic_ha_descender = 0x10004b3,
- Cyrillic_CHE_descender = 0x10004b6,
- Cyrillic_che_descender = 0x10004b7,
- Cyrillic_CHE_vertstroke = 0x10004b8,
- Cyrillic_che_vertstroke = 0x10004b9,
- Cyrillic_SHHA = 0x10004ba,
- Cyrillic_shha = 0x10004bb,
- Cyrillic_SCHWA = 0x10004d8,
- Cyrillic_schwa = 0x10004d9,
- Cyrillic_I_macron = 0x10004e2,
- Cyrillic_i_macron = 0x10004e3,
- Cyrillic_O_bar = 0x10004e8,
- Cyrillic_o_bar = 0x10004e9,
- Cyrillic_U_macron = 0x10004ee,
- Cyrillic_u_macron = 0x10004ef,
- Serbian_dje = 0x06a1,
- Macedonia_gje = 0x06a2,
- Cyrillic_io = 0x06a3,
- Ukrainian_ie = 0x06a4,
- Ukranian_je = 0x06a4,
- Macedonia_dse = 0x06a5,
- Ukrainian_i = 0x06a6,
- Ukranian_i = 0x06a6,
- Ukrainian_yi = 0x06a7,
- Ukranian_yi = 0x06a7,
- Cyrillic_je = 0x06a8,
- Serbian_je = 0x06a8,
- Cyrillic_lje = 0x06a9,
- Serbian_lje = 0x06a9,
- Cyrillic_nje = 0x06aa,
- Serbian_nje = 0x06aa,
- Serbian_tshe = 0x06ab,
- Macedonia_kje = 0x06ac,
- Ukrainian_ghe_with_upturn = 0x06ad,
- Byelorussian_shortu = 0x06ae,
- Cyrillic_dzhe = 0x06af,
- Serbian_dze = 0x06af,
- numerosign = 0x06b0,
- Serbian_DJE = 0x06b1,
- Macedonia_GJE = 0x06b2,
- Cyrillic_IO = 0x06b3,
- Ukrainian_IE = 0x06b4,
- Ukranian_JE = 0x06b4,
- Macedonia_DSE = 0x06b5,
- Ukrainian_I = 0x06b6,
- Ukranian_I = 0x06b6,
- Ukrainian_YI = 0x06b7,
- Ukranian_YI = 0x06b7,
- Cyrillic_JE = 0x06b8,
- Serbian_JE = 0x06b8,
- Cyrillic_LJE = 0x06b9,
- Serbian_LJE = 0x06b9,
- Cyrillic_NJE = 0x06ba,
- Serbian_NJE = 0x06ba,
- Serbian_TSHE = 0x06bb,
- Macedonia_KJE = 0x06bc,
- Ukrainian_GHE_WITH_UPTURN = 0x06bd,
- Byelorussian_SHORTU = 0x06be,
- Cyrillic_DZHE = 0x06bf,
- Serbian_DZE = 0x06bf,
- Cyrillic_yu = 0x06c0,
- Cyrillic_a = 0x06c1,
- Cyrillic_be = 0x06c2,
- Cyrillic_tse = 0x06c3,
- Cyrillic_de = 0x06c4,
- Cyrillic_ie = 0x06c5,
- Cyrillic_ef = 0x06c6,
- Cyrillic_ghe = 0x06c7,
- Cyrillic_ha = 0x06c8,
- Cyrillic_i = 0x06c9,
- Cyrillic_shorti = 0x06ca,
- Cyrillic_ka = 0x06cb,
- Cyrillic_el = 0x06cc,
- Cyrillic_em = 0x06cd,
- Cyrillic_en = 0x06ce,
- Cyrillic_o = 0x06cf,
- Cyrillic_pe = 0x06d0,
- Cyrillic_ya = 0x06d1,
- Cyrillic_er = 0x06d2,
- Cyrillic_es = 0x06d3,
- Cyrillic_te = 0x06d4,
- Cyrillic_u = 0x06d5,
- Cyrillic_zhe = 0x06d6,
- Cyrillic_ve = 0x06d7,
- Cyrillic_softsign = 0x06d8,
- Cyrillic_yeru = 0x06d9,
- Cyrillic_ze = 0x06da,
- Cyrillic_sha = 0x06db,
- Cyrillic_e = 0x06dc,
- Cyrillic_shcha = 0x06dd,
- Cyrillic_che = 0x06de,
- Cyrillic_hardsign = 0x06df,
- Cyrillic_YU = 0x06e0,
- Cyrillic_A = 0x06e1,
- Cyrillic_BE = 0x06e2,
- Cyrillic_TSE = 0x06e3,
- Cyrillic_DE = 0x06e4,
- Cyrillic_IE = 0x06e5,
- Cyrillic_EF = 0x06e6,
- Cyrillic_GHE = 0x06e7,
- Cyrillic_HA = 0x06e8,
- Cyrillic_I = 0x06e9,
- Cyrillic_SHORTI = 0x06ea,
- Cyrillic_KA = 0x06eb,
- Cyrillic_EL = 0x06ec,
- Cyrillic_EM = 0x06ed,
- Cyrillic_EN = 0x06ee,
- Cyrillic_O = 0x06ef,
- Cyrillic_PE = 0x06f0,
- Cyrillic_YA = 0x06f1,
- Cyrillic_ER = 0x06f2,
- Cyrillic_ES = 0x06f3,
- Cyrillic_TE = 0x06f4,
- Cyrillic_U = 0x06f5,
- Cyrillic_ZHE = 0x06f6,
- Cyrillic_VE = 0x06f7,
- Cyrillic_SOFTSIGN = 0x06f8,
- Cyrillic_YERU = 0x06f9,
- Cyrillic_ZE = 0x06fa,
- Cyrillic_SHA = 0x06fb,
- Cyrillic_E = 0x06fc,
- Cyrillic_SHCHA = 0x06fd,
- Cyrillic_CHE = 0x06fe,
- Cyrillic_HARDSIGN = 0x06ff,
- Greek_ALPHAaccent = 0x07a1,
- Greek_EPSILONaccent = 0x07a2,
- Greek_ETAaccent = 0x07a3,
- Greek_IOTAaccent = 0x07a4,
- Greek_IOTAdieresis = 0x07a5,
- Greek_IOTAdiaeresis = 0x07a5,
- Greek_OMICRONaccent = 0x07a7,
- Greek_UPSILONaccent = 0x07a8,
- Greek_UPSILONdieresis = 0x07a9,
- Greek_OMEGAaccent = 0x07ab,
- Greek_accentdieresis = 0x07ae,
- Greek_horizbar = 0x07af,
- Greek_alphaaccent = 0x07b1,
- Greek_epsilonaccent = 0x07b2,
- Greek_etaaccent = 0x07b3,
- Greek_iotaaccent = 0x07b4,
- Greek_iotadieresis = 0x07b5,
- Greek_iotaaccentdieresis = 0x07b6,
- Greek_omicronaccent = 0x07b7,
- Greek_upsilonaccent = 0x07b8,
- Greek_upsilondieresis = 0x07b9,
- Greek_upsilonaccentdieresis = 0x07ba,
- Greek_omegaaccent = 0x07bb,
- Greek_ALPHA = 0x07c1,
- Greek_BETA = 0x07c2,
- Greek_GAMMA = 0x07c3,
- Greek_DELTA = 0x07c4,
- Greek_EPSILON = 0x07c5,
- Greek_ZETA = 0x07c6,
- Greek_ETA = 0x07c7,
- Greek_THETA = 0x07c8,
- Greek_IOTA = 0x07c9,
- Greek_KAPPA = 0x07ca,
- Greek_LAMDA = 0x07cb,
- Greek_LAMBDA = 0x07cb,
- Greek_MU = 0x07cc,
- Greek_NU = 0x07cd,
- Greek_XI = 0x07ce,
- Greek_OMICRON = 0x07cf,
- Greek_PI = 0x07d0,
- Greek_RHO = 0x07d1,
- Greek_SIGMA = 0x07d2,
- Greek_TAU = 0x07d4,
- Greek_UPSILON = 0x07d5,
- Greek_PHI = 0x07d6,
- Greek_CHI = 0x07d7,
- Greek_PSI = 0x07d8,
- Greek_OMEGA = 0x07d9,
- Greek_alpha = 0x07e1,
- Greek_beta = 0x07e2,
- Greek_gamma = 0x07e3,
- Greek_delta = 0x07e4,
- Greek_epsilon = 0x07e5,
- Greek_zeta = 0x07e6,
- Greek_eta = 0x07e7,
- Greek_theta = 0x07e8,
- Greek_iota = 0x07e9,
- Greek_kappa = 0x07ea,
- Greek_lamda = 0x07eb,
- Greek_lambda = 0x07eb,
- Greek_mu = 0x07ec,
- Greek_nu = 0x07ed,
- Greek_xi = 0x07ee,
- Greek_omicron = 0x07ef,
- Greek_pi = 0x07f0,
- Greek_rho = 0x07f1,
- Greek_sigma = 0x07f2,
- Greek_finalsmallsigma = 0x07f3,
- Greek_tau = 0x07f4,
- Greek_upsilon = 0x07f5,
- Greek_phi = 0x07f6,
- Greek_chi = 0x07f7,
- Greek_psi = 0x07f8,
- Greek_omega = 0x07f9,
- Greek_switch = 0xff7e,
- leftradical = 0x08a1,
- topleftradical = 0x08a2,
- horizconnector = 0x08a3,
- topintegral = 0x08a4,
- botintegral = 0x08a5,
- vertconnector = 0x08a6,
- topleftsqbracket = 0x08a7,
- botleftsqbracket = 0x08a8,
- toprightsqbracket = 0x08a9,
- botrightsqbracket = 0x08aa,
- topleftparens = 0x08ab,
- botleftparens = 0x08ac,
- toprightparens = 0x08ad,
- botrightparens = 0x08ae,
- leftmiddlecurlybrace = 0x08af,
- rightmiddlecurlybrace = 0x08b0,
- topleftsummation = 0x08b1,
- botleftsummation = 0x08b2,
- topvertsummationconnector = 0x08b3,
- botvertsummationconnector = 0x08b4,
- toprightsummation = 0x08b5,
- botrightsummation = 0x08b6,
- rightmiddlesummation = 0x08b7,
- lessthanequal = 0x08bc,
- notequal = 0x08bd,
- greaterthanequal = 0x08be,
- integral = 0x08bf,
- therefore = 0x08c0,
- variation = 0x08c1,
- infinity = 0x08c2,
- nabla = 0x08c5,
- approximate = 0x08c8,
- similarequal = 0x08c9,
- ifonlyif = 0x08cd,
- implies = 0x08ce,
- identical = 0x08cf,
- radical = 0x08d6,
- includedin = 0x08da,
- includes = 0x08db,
- intersection = 0x08dc,
- union = 0x08dd,
- logicaland = 0x08de,
- logicalor = 0x08df,
- partialderivative = 0x08ef,
- function = 0x08f6,
- leftarrow = 0x08fb,
- uparrow = 0x08fc,
- rightarrow = 0x08fd,
- downarrow = 0x08fe,
- blank = 0x09df,
- soliddiamond = 0x09e0,
- checkerboard = 0x09e1,
- ht = 0x09e2,
- ff = 0x09e3,
- cr = 0x09e4,
- lf = 0x09e5,
- nl = 0x09e8,
- vt = 0x09e9,
- lowrightcorner = 0x09ea,
- uprightcorner = 0x09eb,
- upleftcorner = 0x09ec,
- lowleftcorner = 0x09ed,
- crossinglines = 0x09ee,
- horizlinescan1 = 0x09ef,
- horizlinescan3 = 0x09f0,
- horizlinescan5 = 0x09f1,
- horizlinescan7 = 0x09f2,
- horizlinescan9 = 0x09f3,
- leftt = 0x09f4,
- rightt = 0x09f5,
- bott = 0x09f6,
- topt = 0x09f7,
- vertbar = 0x09f8,
- emspace = 0x0aa1,
- enspace = 0x0aa2,
- em3space = 0x0aa3,
- em4space = 0x0aa4,
- digitspace = 0x0aa5,
- punctspace = 0x0aa6,
- thinspace = 0x0aa7,
- hairspace = 0x0aa8,
- emdash = 0x0aa9,
- endash = 0x0aaa,
- signifblank = 0x0aac,
- ellipsis = 0x0aae,
- doubbaselinedot = 0x0aaf,
- onethird = 0x0ab0,
- twothirds = 0x0ab1,
- onefifth = 0x0ab2,
- twofifths = 0x0ab3,
- threefifths = 0x0ab4,
- fourfifths = 0x0ab5,
- onesixth = 0x0ab6,
- fivesixths = 0x0ab7,
- careof = 0x0ab8,
- figdash = 0x0abb,
- leftanglebracket = 0x0abc,
- decimalpoint = 0x0abd,
- rightanglebracket = 0x0abe,
- marker = 0x0abf,
- oneeighth = 0x0ac3,
- threeeighths = 0x0ac4,
- fiveeighths = 0x0ac5,
- seveneighths = 0x0ac6,
- trademark = 0x0ac9,
- signaturemark = 0x0aca,
- trademarkincircle = 0x0acb,
- leftopentriangle = 0x0acc,
- rightopentriangle = 0x0acd,
- emopencircle = 0x0ace,
- emopenrectangle = 0x0acf,
- leftsinglequotemark = 0x0ad0,
- rightsinglequotemark = 0x0ad1,
- leftdoublequotemark = 0x0ad2,
- rightdoublequotemark = 0x0ad3,
- prescription = 0x0ad4,
- permille = 0x0ad5,
- minutes = 0x0ad6,
- seconds = 0x0ad7,
- latincross = 0x0ad9,
- hexagram = 0x0ada,
- filledrectbullet = 0x0adb,
- filledlefttribullet = 0x0adc,
- filledrighttribullet = 0x0add,
- emfilledcircle = 0x0ade,
- emfilledrect = 0x0adf,
- enopencircbullet = 0x0ae0,
- enopensquarebullet = 0x0ae1,
- openrectbullet = 0x0ae2,
- opentribulletup = 0x0ae3,
- opentribulletdown = 0x0ae4,
- openstar = 0x0ae5,
- enfilledcircbullet = 0x0ae6,
- enfilledsqbullet = 0x0ae7,
- filledtribulletup = 0x0ae8,
- filledtribulletdown = 0x0ae9,
- leftpointer = 0x0aea,
- rightpointer = 0x0aeb,
- club = 0x0aec,
- diamond = 0x0aed,
- heart = 0x0aee,
- maltesecross = 0x0af0,
- dagger = 0x0af1,
- doubledagger = 0x0af2,
- checkmark = 0x0af3,
- ballotcross = 0x0af4,
- musicalsharp = 0x0af5,
- musicalflat = 0x0af6,
- malesymbol = 0x0af7,
- femalesymbol = 0x0af8,
- telephone = 0x0af9,
- telephonerecorder = 0x0afa,
- phonographcopyright = 0x0afb,
- caret = 0x0afc,
- singlelowquotemark = 0x0afd,
- doublelowquotemark = 0x0afe,
- cursor = 0x0aff,
- leftcaret = 0x0ba3,
- rightcaret = 0x0ba6,
- downcaret = 0x0ba8,
- upcaret = 0x0ba9,
- overbar = 0x0bc0,
- downtack = 0x0bc2,
- upshoe = 0x0bc3,
- downstile = 0x0bc4,
- underbar = 0x0bc6,
- jot = 0x0bca,
- quad = 0x0bcc,
- uptack = 0x0bce,
- circle = 0x0bcf,
- upstile = 0x0bd3,
- downshoe = 0x0bd6,
- rightshoe = 0x0bd8,
- leftshoe = 0x0bda,
- lefttack = 0x0bdc,
- righttack = 0x0bfc,
- hebrew_doublelowline = 0x0cdf,
- hebrew_aleph = 0x0ce0,
- hebrew_bet = 0x0ce1,
- hebrew_beth = 0x0ce1,
- hebrew_gimel = 0x0ce2,
- hebrew_gimmel = 0x0ce2,
- hebrew_dalet = 0x0ce3,
- hebrew_daleth = 0x0ce3,
- hebrew_he = 0x0ce4,
- hebrew_waw = 0x0ce5,
- hebrew_zain = 0x0ce6,
- hebrew_zayin = 0x0ce6,
- hebrew_chet = 0x0ce7,
- hebrew_het = 0x0ce7,
- hebrew_tet = 0x0ce8,
- hebrew_teth = 0x0ce8,
- hebrew_yod = 0x0ce9,
- hebrew_finalkaph = 0x0cea,
- hebrew_kaph = 0x0ceb,
- hebrew_lamed = 0x0cec,
- hebrew_finalmem = 0x0ced,
- hebrew_mem = 0x0cee,
- hebrew_finalnun = 0x0cef,
- hebrew_nun = 0x0cf0,
- hebrew_samech = 0x0cf1,
- hebrew_samekh = 0x0cf1,
- hebrew_ayin = 0x0cf2,
- hebrew_finalpe = 0x0cf3,
- hebrew_pe = 0x0cf4,
- hebrew_finalzade = 0x0cf5,
- hebrew_finalzadi = 0x0cf5,
- hebrew_zade = 0x0cf6,
- hebrew_zadi = 0x0cf6,
- hebrew_qoph = 0x0cf7,
- hebrew_kuf = 0x0cf7,
- hebrew_resh = 0x0cf8,
- hebrew_shin = 0x0cf9,
- hebrew_taw = 0x0cfa,
- hebrew_taf = 0x0cfa,
- Hebrew_switch = 0xff7e,
- Thai_kokai = 0x0da1,
- Thai_khokhai = 0x0da2,
- Thai_khokhuat = 0x0da3,
- Thai_khokhwai = 0x0da4,
- Thai_khokhon = 0x0da5,
- Thai_khorakhang = 0x0da6,
- Thai_ngongu = 0x0da7,
- Thai_chochan = 0x0da8,
- Thai_choching = 0x0da9,
- Thai_chochang = 0x0daa,
- Thai_soso = 0x0dab,
- Thai_chochoe = 0x0dac,
- Thai_yoying = 0x0dad,
- Thai_dochada = 0x0dae,
- Thai_topatak = 0x0daf,
- Thai_thothan = 0x0db0,
- Thai_thonangmontho = 0x0db1,
- Thai_thophuthao = 0x0db2,
- Thai_nonen = 0x0db3,
- Thai_dodek = 0x0db4,
- Thai_totao = 0x0db5,
- Thai_thothung = 0x0db6,
- Thai_thothahan = 0x0db7,
- Thai_thothong = 0x0db8,
- Thai_nonu = 0x0db9,
- Thai_bobaimai = 0x0dba,
- Thai_popla = 0x0dbb,
- Thai_phophung = 0x0dbc,
- Thai_fofa = 0x0dbd,
- Thai_phophan = 0x0dbe,
- Thai_fofan = 0x0dbf,
- Thai_phosamphao = 0x0dc0,
- Thai_moma = 0x0dc1,
- Thai_yoyak = 0x0dc2,
- Thai_rorua = 0x0dc3,
- Thai_ru = 0x0dc4,
- Thai_loling = 0x0dc5,
- Thai_lu = 0x0dc6,
- Thai_wowaen = 0x0dc7,
- Thai_sosala = 0x0dc8,
- Thai_sorusi = 0x0dc9,
- Thai_sosua = 0x0dca,
- Thai_hohip = 0x0dcb,
- Thai_lochula = 0x0dcc,
- Thai_oang = 0x0dcd,
- Thai_honokhuk = 0x0dce,
- Thai_paiyannoi = 0x0dcf,
- Thai_saraa = 0x0dd0,
- Thai_maihanakat = 0x0dd1,
- Thai_saraaa = 0x0dd2,
- Thai_saraam = 0x0dd3,
- Thai_sarai = 0x0dd4,
- Thai_saraii = 0x0dd5,
- Thai_saraue = 0x0dd6,
- Thai_sarauee = 0x0dd7,
- Thai_sarau = 0x0dd8,
- Thai_sarauu = 0x0dd9,
- Thai_phinthu = 0x0dda,
- Thai_maihanakat_maitho = 0x0dde,
- Thai_baht = 0x0ddf,
- Thai_sarae = 0x0de0,
- Thai_saraae = 0x0de1,
- Thai_sarao = 0x0de2,
- Thai_saraaimaimuan = 0x0de3,
- Thai_saraaimaimalai = 0x0de4,
- Thai_lakkhangyao = 0x0de5,
- Thai_maiyamok = 0x0de6,
- Thai_maitaikhu = 0x0de7,
- Thai_maiek = 0x0de8,
- Thai_maitho = 0x0de9,
- Thai_maitri = 0x0dea,
- Thai_maichattawa = 0x0deb,
- Thai_thanthakhat = 0x0dec,
- Thai_nikhahit = 0x0ded,
- Thai_leksun = 0x0df0,
- Thai_leknung = 0x0df1,
- Thai_leksong = 0x0df2,
- Thai_leksam = 0x0df3,
- Thai_leksi = 0x0df4,
- Thai_lekha = 0x0df5,
- Thai_lekhok = 0x0df6,
- Thai_lekchet = 0x0df7,
- Thai_lekpaet = 0x0df8,
- Thai_lekkao = 0x0df9,
- Hangul = 0xff31,
- Hangul_Start = 0xff32,
- Hangul_End = 0xff33,
- Hangul_Hanja = 0xff34,
- Hangul_Jamo = 0xff35,
- Hangul_Romaja = 0xff36,
- Hangul_Codeinput = 0xff37,
- Hangul_Jeonja = 0xff38,
- Hangul_Banja = 0xff39,
- Hangul_PreHanja = 0xff3a,
- Hangul_PostHanja = 0xff3b,
- Hangul_SingleCandidate = 0xff3c,
- Hangul_MultipleCandidate = 0xff3d,
- Hangul_PreviousCandidate = 0xff3e,
- Hangul_Special = 0xff3f,
- Hangul_switch = 0xff7e,
- Hangul_Kiyeog = 0x0ea1,
- Hangul_SsangKiyeog = 0x0ea2,
- Hangul_KiyeogSios = 0x0ea3,
- Hangul_Nieun = 0x0ea4,
- Hangul_NieunJieuj = 0x0ea5,
- Hangul_NieunHieuh = 0x0ea6,
- Hangul_Dikeud = 0x0ea7,
- Hangul_SsangDikeud = 0x0ea8,
- Hangul_Rieul = 0x0ea9,
- Hangul_RieulKiyeog = 0x0eaa,
- Hangul_RieulMieum = 0x0eab,
- Hangul_RieulPieub = 0x0eac,
- Hangul_RieulSios = 0x0ead,
- Hangul_RieulTieut = 0x0eae,
- Hangul_RieulPhieuf = 0x0eaf,
- Hangul_RieulHieuh = 0x0eb0,
- Hangul_Mieum = 0x0eb1,
- Hangul_Pieub = 0x0eb2,
- Hangul_SsangPieub = 0x0eb3,
- Hangul_PieubSios = 0x0eb4,
- Hangul_Sios = 0x0eb5,
- Hangul_SsangSios = 0x0eb6,
- Hangul_Ieung = 0x0eb7,
- Hangul_Jieuj = 0x0eb8,
- Hangul_SsangJieuj = 0x0eb9,
- Hangul_Cieuc = 0x0eba,
- Hangul_Khieuq = 0x0ebb,
- Hangul_Tieut = 0x0ebc,
- Hangul_Phieuf = 0x0ebd,
- Hangul_Hieuh = 0x0ebe,
- Hangul_A = 0x0ebf,
- Hangul_AE = 0x0ec0,
- Hangul_YA = 0x0ec1,
- Hangul_YAE = 0x0ec2,
- Hangul_EO = 0x0ec3,
- Hangul_E = 0x0ec4,
- Hangul_YEO = 0x0ec5,
- Hangul_YE = 0x0ec6,
- Hangul_O = 0x0ec7,
- Hangul_WA = 0x0ec8,
- Hangul_WAE = 0x0ec9,
- Hangul_OE = 0x0eca,
- Hangul_YO = 0x0ecb,
- Hangul_U = 0x0ecc,
- Hangul_WEO = 0x0ecd,
- Hangul_WE = 0x0ece,
- Hangul_WI = 0x0ecf,
- Hangul_YU = 0x0ed0,
- Hangul_EU = 0x0ed1,
- Hangul_YI = 0x0ed2,
- Hangul_I = 0x0ed3,
- Hangul_J_Kiyeog = 0x0ed4,
- Hangul_J_SsangKiyeog = 0x0ed5,
- Hangul_J_KiyeogSios = 0x0ed6,
- Hangul_J_Nieun = 0x0ed7,
- Hangul_J_NieunJieuj = 0x0ed8,
- Hangul_J_NieunHieuh = 0x0ed9,
- Hangul_J_Dikeud = 0x0eda,
- Hangul_J_Rieul = 0x0edb,
- Hangul_J_RieulKiyeog = 0x0edc,
- Hangul_J_RieulMieum = 0x0edd,
- Hangul_J_RieulPieub = 0x0ede,
- Hangul_J_RieulSios = 0x0edf,
- Hangul_J_RieulTieut = 0x0ee0,
- Hangul_J_RieulPhieuf = 0x0ee1,
- Hangul_J_RieulHieuh = 0x0ee2,
- Hangul_J_Mieum = 0x0ee3,
- Hangul_J_Pieub = 0x0ee4,
- Hangul_J_PieubSios = 0x0ee5,
- Hangul_J_Sios = 0x0ee6,
- Hangul_J_SsangSios = 0x0ee7,
- Hangul_J_Ieung = 0x0ee8,
- Hangul_J_Jieuj = 0x0ee9,
- Hangul_J_Cieuc = 0x0eea,
- Hangul_J_Khieuq = 0x0eeb,
- Hangul_J_Tieut = 0x0eec,
- Hangul_J_Phieuf = 0x0eed,
- Hangul_J_Hieuh = 0x0eee,
- Hangul_RieulYeorinHieuh = 0x0eef,
- Hangul_SunkyeongeumMieum = 0x0ef0,
- Hangul_SunkyeongeumPieub = 0x0ef1,
- Hangul_PanSios = 0x0ef2,
- Hangul_KkogjiDalrinIeung = 0x0ef3,
- Hangul_SunkyeongeumPhieuf = 0x0ef4,
- Hangul_YeorinHieuh = 0x0ef5,
- Hangul_AraeA = 0x0ef6,
- Hangul_AraeAE = 0x0ef7,
- Hangul_J_PanSios = 0x0ef8,
- Hangul_J_KkogjiDalrinIeung = 0x0ef9,
- Hangul_J_YeorinHieuh = 0x0efa,
- Korean_Won = 0x0eff,
- Armenian_ligature_ew = 0x1000587,
- Armenian_full_stop = 0x1000589,
- Armenian_verjaket = 0x1000589,
- Armenian_separation_mark = 0x100055d,
- Armenian_but = 0x100055d,
- Armenian_hyphen = 0x100058a,
- Armenian_yentamna = 0x100058a,
- Armenian_exclam = 0x100055c,
- Armenian_amanak = 0x100055c,
- Armenian_accent = 0x100055b,
- Armenian_shesht = 0x100055b,
- Armenian_question = 0x100055e,
- Armenian_paruyk = 0x100055e,
- Armenian_AYB = 0x1000531,
- Armenian_ayb = 0x1000561,
- Armenian_BEN = 0x1000532,
- Armenian_ben = 0x1000562,
- Armenian_GIM = 0x1000533,
- Armenian_gim = 0x1000563,
- Armenian_DA = 0x1000534,
- Armenian_da = 0x1000564,
- Armenian_YECH = 0x1000535,
- Armenian_yech = 0x1000565,
- Armenian_ZA = 0x1000536,
- Armenian_za = 0x1000566,
- Armenian_E = 0x1000537,
- Armenian_e = 0x1000567,
- Armenian_AT = 0x1000538,
- Armenian_at = 0x1000568,
- Armenian_TO = 0x1000539,
- Armenian_to = 0x1000569,
- Armenian_ZHE = 0x100053a,
- Armenian_zhe = 0x100056a,
- Armenian_INI = 0x100053b,
- Armenian_ini = 0x100056b,
- Armenian_LYUN = 0x100053c,
- Armenian_lyun = 0x100056c,
- Armenian_KHE = 0x100053d,
- Armenian_khe = 0x100056d,
- Armenian_TSA = 0x100053e,
- Armenian_tsa = 0x100056e,
- Armenian_KEN = 0x100053f,
- Armenian_ken = 0x100056f,
- Armenian_HO = 0x1000540,
- Armenian_ho = 0x1000570,
- Armenian_DZA = 0x1000541,
- Armenian_dza = 0x1000571,
- Armenian_GHAT = 0x1000542,
- Armenian_ghat = 0x1000572,
- Armenian_TCHE = 0x1000543,
- Armenian_tche = 0x1000573,
- Armenian_MEN = 0x1000544,
- Armenian_men = 0x1000574,
- Armenian_HI = 0x1000545,
- Armenian_hi = 0x1000575,
- Armenian_NU = 0x1000546,
- Armenian_nu = 0x1000576,
- Armenian_SHA = 0x1000547,
- Armenian_sha = 0x1000577,
- Armenian_VO = 0x1000548,
- Armenian_vo = 0x1000578,
- Armenian_CHA = 0x1000549,
- Armenian_cha = 0x1000579,
- Armenian_PE = 0x100054a,
- Armenian_pe = 0x100057a,
- Armenian_JE = 0x100054b,
- Armenian_je = 0x100057b,
- Armenian_RA = 0x100054c,
- Armenian_ra = 0x100057c,
- Armenian_SE = 0x100054d,
- Armenian_se = 0x100057d,
- Armenian_VEV = 0x100054e,
- Armenian_vev = 0x100057e,
- Armenian_TYUN = 0x100054f,
- Armenian_tyun = 0x100057f,
- Armenian_RE = 0x1000550,
- Armenian_re = 0x1000580,
- Armenian_TSO = 0x1000551,
- Armenian_tso = 0x1000581,
- Armenian_VYUN = 0x1000552,
- Armenian_vyun = 0x1000582,
- Armenian_PYUR = 0x1000553,
- Armenian_pyur = 0x1000583,
- Armenian_KE = 0x1000554,
- Armenian_ke = 0x1000584,
- Armenian_O = 0x1000555,
- Armenian_o = 0x1000585,
- Armenian_FE = 0x1000556,
- Armenian_fe = 0x1000586,
- Armenian_apostrophe = 0x100055a,
- Georgian_an = 0x10010d0,
- Georgian_ban = 0x10010d1,
- Georgian_gan = 0x10010d2,
- Georgian_don = 0x10010d3,
- Georgian_en = 0x10010d4,
- Georgian_vin = 0x10010d5,
- Georgian_zen = 0x10010d6,
- Georgian_tan = 0x10010d7,
- Georgian_in = 0x10010d8,
- Georgian_kan = 0x10010d9,
- Georgian_las = 0x10010da,
- Georgian_man = 0x10010db,
- Georgian_nar = 0x10010dc,
- Georgian_on = 0x10010dd,
- Georgian_par = 0x10010de,
- Georgian_zhar = 0x10010df,
- Georgian_rae = 0x10010e0,
- Georgian_san = 0x10010e1,
- Georgian_tar = 0x10010e2,
- Georgian_un = 0x10010e3,
- Georgian_phar = 0x10010e4,
- Georgian_khar = 0x10010e5,
- Georgian_ghan = 0x10010e6,
- Georgian_qar = 0x10010e7,
- Georgian_shin = 0x10010e8,
- Georgian_chin = 0x10010e9,
- Georgian_can = 0x10010ea,
- Georgian_jil = 0x10010eb,
- Georgian_cil = 0x10010ec,
- Georgian_char = 0x10010ed,
- Georgian_xan = 0x10010ee,
- Georgian_jhan = 0x10010ef,
- Georgian_hae = 0x10010f0,
- Georgian_he = 0x10010f1,
- Georgian_hie = 0x10010f2,
- Georgian_we = 0x10010f3,
- Georgian_har = 0x10010f4,
- Georgian_hoe = 0x10010f5,
- Georgian_fi = 0x10010f6,
- Xabovedot = 0x1001e8a,
- Ibreve = 0x100012c,
- Zstroke = 0x10001b5,
- Gcaron = 0x10001e6,
- Ocaron = 0x10001d1,
- Obarred = 0x100019f,
- xabovedot = 0x1001e8b,
- ibreve = 0x100012d,
- zstroke = 0x10001b6,
- gcaron = 0x10001e7,
- ocaron = 0x10001d2,
- obarred = 0x1000275,
- SCHWA = 0x100018f,
- schwa = 0x1000259,
- EZH = 0x10001b7,
- ezh = 0x1000292,
- Lbelowdot = 0x1001e36,
- lbelowdot = 0x1001e37,
- Abelowdot = 0x1001ea0,
- abelowdot = 0x1001ea1,
- Ahook = 0x1001ea2,
- ahook = 0x1001ea3,
- Acircumflexacute = 0x1001ea4,
- acircumflexacute = 0x1001ea5,
- Acircumflexgrave = 0x1001ea6,
- acircumflexgrave = 0x1001ea7,
- Acircumflexhook = 0x1001ea8,
- acircumflexhook = 0x1001ea9,
- Acircumflextilde = 0x1001eaa,
- acircumflextilde = 0x1001eab,
- Acircumflexbelowdot = 0x1001eac,
- acircumflexbelowdot = 0x1001ead,
- Abreveacute = 0x1001eae,
- abreveacute = 0x1001eaf,
- Abrevegrave = 0x1001eb0,
- abrevegrave = 0x1001eb1,
- Abrevehook = 0x1001eb2,
- abrevehook = 0x1001eb3,
- Abrevetilde = 0x1001eb4,
- abrevetilde = 0x1001eb5,
- Abrevebelowdot = 0x1001eb6,
- abrevebelowdot = 0x1001eb7,
- Ebelowdot = 0x1001eb8,
- ebelowdot = 0x1001eb9,
- Ehook = 0x1001eba,
- ehook = 0x1001ebb,
- Etilde = 0x1001ebc,
- etilde = 0x1001ebd,
- Ecircumflexacute = 0x1001ebe,
- ecircumflexacute = 0x1001ebf,
- Ecircumflexgrave = 0x1001ec0,
- ecircumflexgrave = 0x1001ec1,
- Ecircumflexhook = 0x1001ec2,
- ecircumflexhook = 0x1001ec3,
- Ecircumflextilde = 0x1001ec4,
- ecircumflextilde = 0x1001ec5,
- Ecircumflexbelowdot = 0x1001ec6,
- ecircumflexbelowdot = 0x1001ec7,
- Ihook = 0x1001ec8,
- ihook = 0x1001ec9,
- Ibelowdot = 0x1001eca,
- ibelowdot = 0x1001ecb,
- Obelowdot = 0x1001ecc,
- obelowdot = 0x1001ecd,
- Ohook = 0x1001ece,
- ohook = 0x1001ecf,
- Ocircumflexacute = 0x1001ed0,
- ocircumflexacute = 0x1001ed1,
- Ocircumflexgrave = 0x1001ed2,
- ocircumflexgrave = 0x1001ed3,
- Ocircumflexhook = 0x1001ed4,
- ocircumflexhook = 0x1001ed5,
- Ocircumflextilde = 0x1001ed6,
- ocircumflextilde = 0x1001ed7,
- Ocircumflexbelowdot = 0x1001ed8,
- ocircumflexbelowdot = 0x1001ed9,
- Ohornacute = 0x1001eda,
- ohornacute = 0x1001edb,
- Ohorngrave = 0x1001edc,
- ohorngrave = 0x1001edd,
- Ohornhook = 0x1001ede,
- ohornhook = 0x1001edf,
- Ohorntilde = 0x1001ee0,
- ohorntilde = 0x1001ee1,
- Ohornbelowdot = 0x1001ee2,
- ohornbelowdot = 0x1001ee3,
- Ubelowdot = 0x1001ee4,
- ubelowdot = 0x1001ee5,
- Uhook = 0x1001ee6,
- uhook = 0x1001ee7,
- Uhornacute = 0x1001ee8,
- uhornacute = 0x1001ee9,
- Uhorngrave = 0x1001eea,
- uhorngrave = 0x1001eeb,
- Uhornhook = 0x1001eec,
- uhornhook = 0x1001eed,
- Uhorntilde = 0x1001eee,
- uhorntilde = 0x1001eef,
- Uhornbelowdot = 0x1001ef0,
- uhornbelowdot = 0x1001ef1,
- Ybelowdot = 0x1001ef4,
- ybelowdot = 0x1001ef5,
- Yhook = 0x1001ef6,
- yhook = 0x1001ef7,
- Ytilde = 0x1001ef8,
- ytilde = 0x1001ef9,
- Ohorn = 0x10001a0,
- ohorn = 0x10001a1,
- Uhorn = 0x10001af,
- uhorn = 0x10001b0,
- EcuSign = 0x10020a0,
- ColonSign = 0x10020a1,
- CruzeiroSign = 0x10020a2,
- FFrancSign = 0x10020a3,
- LiraSign = 0x10020a4,
- MillSign = 0x10020a5,
- NairaSign = 0x10020a6,
- PesetaSign = 0x10020a7,
- RupeeSign = 0x10020a8,
- WonSign = 0x10020a9,
- NewSheqelSign = 0x10020aa,
- DongSign = 0x10020ab,
- EuroSign = 0x20ac,
- zerosuperior = 0x1002070,
- foursuperior = 0x1002074,
- fivesuperior = 0x1002075,
- sixsuperior = 0x1002076,
- sevensuperior = 0x1002077,
- eightsuperior = 0x1002078,
- ninesuperior = 0x1002079,
- zerosubscript = 0x1002080,
- onesubscript = 0x1002081,
- twosubscript = 0x1002082,
- threesubscript = 0x1002083,
- foursubscript = 0x1002084,
- fivesubscript = 0x1002085,
- sixsubscript = 0x1002086,
- sevensubscript = 0x1002087,
- eightsubscript = 0x1002088,
- ninesubscript = 0x1002089,
- partdifferential = 0x1002202,
- emptyset = 0x1002205,
- elementof = 0x1002208,
- notelementof = 0x1002209,
- containsas = 0x100220B,
- squareroot = 0x100221A,
- cuberoot = 0x100221B,
- fourthroot = 0x100221C,
- dintegral = 0x100222C,
- tintegral = 0x100222D,
- because = 0x1002235,
- approxeq = 0x1002248,
- notapproxeq = 0x1002247,
- notidentical = 0x1002262,
- stricteq = 0x1002263,
- braille_dot_1 = 0xfff1,
- braille_dot_2 = 0xfff2,
- braille_dot_3 = 0xfff3,
- braille_dot_4 = 0xfff4,
- braille_dot_5 = 0xfff5,
- braille_dot_6 = 0xfff6,
- braille_dot_7 = 0xfff7,
- braille_dot_8 = 0xfff8,
- braille_dot_9 = 0xfff9,
- braille_dot_10 = 0xfffa,
- braille_blank = 0x1002800,
- braille_dots_1 = 0x1002801,
- braille_dots_2 = 0x1002802,
- braille_dots_12 = 0x1002803,
- braille_dots_3 = 0x1002804,
- braille_dots_13 = 0x1002805,
- braille_dots_23 = 0x1002806,
- braille_dots_123 = 0x1002807,
- braille_dots_4 = 0x1002808,
- braille_dots_14 = 0x1002809,
- braille_dots_24 = 0x100280a,
- braille_dots_124 = 0x100280b,
- braille_dots_34 = 0x100280c,
- braille_dots_134 = 0x100280d,
- braille_dots_234 = 0x100280e,
- braille_dots_1234 = 0x100280f,
- braille_dots_5 = 0x1002810,
- braille_dots_15 = 0x1002811,
- braille_dots_25 = 0x1002812,
- braille_dots_125 = 0x1002813,
- braille_dots_35 = 0x1002814,
- braille_dots_135 = 0x1002815,
- braille_dots_235 = 0x1002816,
- braille_dots_1235 = 0x1002817,
- braille_dots_45 = 0x1002818,
- braille_dots_145 = 0x1002819,
- braille_dots_245 = 0x100281a,
- braille_dots_1245 = 0x100281b,
- braille_dots_345 = 0x100281c,
- braille_dots_1345 = 0x100281d,
- braille_dots_2345 = 0x100281e,
- braille_dots_12345 = 0x100281f,
- braille_dots_6 = 0x1002820,
- braille_dots_16 = 0x1002821,
- braille_dots_26 = 0x1002822,
- braille_dots_126 = 0x1002823,
- braille_dots_36 = 0x1002824,
- braille_dots_136 = 0x1002825,
- braille_dots_236 = 0x1002826,
- braille_dots_1236 = 0x1002827,
- braille_dots_46 = 0x1002828,
- braille_dots_146 = 0x1002829,
- braille_dots_246 = 0x100282a,
- braille_dots_1246 = 0x100282b,
- braille_dots_346 = 0x100282c,
- braille_dots_1346 = 0x100282d,
- braille_dots_2346 = 0x100282e,
- braille_dots_12346 = 0x100282f,
- braille_dots_56 = 0x1002830,
- braille_dots_156 = 0x1002831,
- braille_dots_256 = 0x1002832,
- braille_dots_1256 = 0x1002833,
- braille_dots_356 = 0x1002834,
- braille_dots_1356 = 0x1002835,
- braille_dots_2356 = 0x1002836,
- braille_dots_12356 = 0x1002837,
- braille_dots_456 = 0x1002838,
- braille_dots_1456 = 0x1002839,
- braille_dots_2456 = 0x100283a,
- braille_dots_12456 = 0x100283b,
- braille_dots_3456 = 0x100283c,
- braille_dots_13456 = 0x100283d,
- braille_dots_23456 = 0x100283e,
- braille_dots_123456 = 0x100283f,
- braille_dots_7 = 0x1002840,
- braille_dots_17 = 0x1002841,
- braille_dots_27 = 0x1002842,
- braille_dots_127 = 0x1002843,
- braille_dots_37 = 0x1002844,
- braille_dots_137 = 0x1002845,
- braille_dots_237 = 0x1002846,
- braille_dots_1237 = 0x1002847,
- braille_dots_47 = 0x1002848,
- braille_dots_147 = 0x1002849,
- braille_dots_247 = 0x100284a,
- braille_dots_1247 = 0x100284b,
- braille_dots_347 = 0x100284c,
- braille_dots_1347 = 0x100284d,
- braille_dots_2347 = 0x100284e,
- braille_dots_12347 = 0x100284f,
- braille_dots_57 = 0x1002850,
- braille_dots_157 = 0x1002851,
- braille_dots_257 = 0x1002852,
- braille_dots_1257 = 0x1002853,
- braille_dots_357 = 0x1002854,
- braille_dots_1357 = 0x1002855,
- braille_dots_2357 = 0x1002856,
- braille_dots_12357 = 0x1002857,
- braille_dots_457 = 0x1002858,
- braille_dots_1457 = 0x1002859,
- braille_dots_2457 = 0x100285a,
- braille_dots_12457 = 0x100285b,
- braille_dots_3457 = 0x100285c,
- braille_dots_13457 = 0x100285d,
- braille_dots_23457 = 0x100285e,
- braille_dots_123457 = 0x100285f,
- braille_dots_67 = 0x1002860,
- braille_dots_167 = 0x1002861,
- braille_dots_267 = 0x1002862,
- braille_dots_1267 = 0x1002863,
- braille_dots_367 = 0x1002864,
- braille_dots_1367 = 0x1002865,
- braille_dots_2367 = 0x1002866,
- braille_dots_12367 = 0x1002867,
- braille_dots_467 = 0x1002868,
- braille_dots_1467 = 0x1002869,
- braille_dots_2467 = 0x100286a,
- braille_dots_12467 = 0x100286b,
- braille_dots_3467 = 0x100286c,
- braille_dots_13467 = 0x100286d,
- braille_dots_23467 = 0x100286e,
- braille_dots_123467 = 0x100286f,
- braille_dots_567 = 0x1002870,
- braille_dots_1567 = 0x1002871,
- braille_dots_2567 = 0x1002872,
- braille_dots_12567 = 0x1002873,
- braille_dots_3567 = 0x1002874,
- braille_dots_13567 = 0x1002875,
- braille_dots_23567 = 0x1002876,
- braille_dots_123567 = 0x1002877,
- braille_dots_4567 = 0x1002878,
- braille_dots_14567 = 0x1002879,
- braille_dots_24567 = 0x100287a,
- braille_dots_124567 = 0x100287b,
- braille_dots_34567 = 0x100287c,
- braille_dots_134567 = 0x100287d,
- braille_dots_234567 = 0x100287e,
- braille_dots_1234567 = 0x100287f,
- braille_dots_8 = 0x1002880,
- braille_dots_18 = 0x1002881,
- braille_dots_28 = 0x1002882,
- braille_dots_128 = 0x1002883,
- braille_dots_38 = 0x1002884,
- braille_dots_138 = 0x1002885,
- braille_dots_238 = 0x1002886,
- braille_dots_1238 = 0x1002887,
- braille_dots_48 = 0x1002888,
- braille_dots_148 = 0x1002889,
- braille_dots_248 = 0x100288a,
- braille_dots_1248 = 0x100288b,
- braille_dots_348 = 0x100288c,
- braille_dots_1348 = 0x100288d,
- braille_dots_2348 = 0x100288e,
- braille_dots_12348 = 0x100288f,
- braille_dots_58 = 0x1002890,
- braille_dots_158 = 0x1002891,
- braille_dots_258 = 0x1002892,
- braille_dots_1258 = 0x1002893,
- braille_dots_358 = 0x1002894,
- braille_dots_1358 = 0x1002895,
- braille_dots_2358 = 0x1002896,
- braille_dots_12358 = 0x1002897,
- braille_dots_458 = 0x1002898,
- braille_dots_1458 = 0x1002899,
- braille_dots_2458 = 0x100289a,
- braille_dots_12458 = 0x100289b,
- braille_dots_3458 = 0x100289c,
- braille_dots_13458 = 0x100289d,
- braille_dots_23458 = 0x100289e,
- braille_dots_123458 = 0x100289f,
- braille_dots_68 = 0x10028a0,
- braille_dots_168 = 0x10028a1,
- braille_dots_268 = 0x10028a2,
- braille_dots_1268 = 0x10028a3,
- braille_dots_368 = 0x10028a4,
- braille_dots_1368 = 0x10028a5,
- braille_dots_2368 = 0x10028a6,
- braille_dots_12368 = 0x10028a7,
- braille_dots_468 = 0x10028a8,
- braille_dots_1468 = 0x10028a9,
- braille_dots_2468 = 0x10028aa,
- braille_dots_12468 = 0x10028ab,
- braille_dots_3468 = 0x10028ac,
- braille_dots_13468 = 0x10028ad,
- braille_dots_23468 = 0x10028ae,
- braille_dots_123468 = 0x10028af,
- braille_dots_568 = 0x10028b0,
- braille_dots_1568 = 0x10028b1,
- braille_dots_2568 = 0x10028b2,
- braille_dots_12568 = 0x10028b3,
- braille_dots_3568 = 0x10028b4,
- braille_dots_13568 = 0x10028b5,
- braille_dots_23568 = 0x10028b6,
- braille_dots_123568 = 0x10028b7,
- braille_dots_4568 = 0x10028b8,
- braille_dots_14568 = 0x10028b9,
- braille_dots_24568 = 0x10028ba,
- braille_dots_124568 = 0x10028bb,
- braille_dots_34568 = 0x10028bc,
- braille_dots_134568 = 0x10028bd,
- braille_dots_234568 = 0x10028be,
- braille_dots_1234568 = 0x10028bf,
- braille_dots_78 = 0x10028c0,
- braille_dots_178 = 0x10028c1,
- braille_dots_278 = 0x10028c2,
- braille_dots_1278 = 0x10028c3,
- braille_dots_378 = 0x10028c4,
- braille_dots_1378 = 0x10028c5,
- braille_dots_2378 = 0x10028c6,
- braille_dots_12378 = 0x10028c7,
- braille_dots_478 = 0x10028c8,
- braille_dots_1478 = 0x10028c9,
- braille_dots_2478 = 0x10028ca,
- braille_dots_12478 = 0x10028cb,
- braille_dots_3478 = 0x10028cc,
- braille_dots_13478 = 0x10028cd,
- braille_dots_23478 = 0x10028ce,
- braille_dots_123478 = 0x10028cf,
- braille_dots_578 = 0x10028d0,
- braille_dots_1578 = 0x10028d1,
- braille_dots_2578 = 0x10028d2,
- braille_dots_12578 = 0x10028d3,
- braille_dots_3578 = 0x10028d4,
- braille_dots_13578 = 0x10028d5,
- braille_dots_23578 = 0x10028d6,
- braille_dots_123578 = 0x10028d7,
- braille_dots_4578 = 0x10028d8,
- braille_dots_14578 = 0x10028d9,
- braille_dots_24578 = 0x10028da,
- braille_dots_124578 = 0x10028db,
- braille_dots_34578 = 0x10028dc,
- braille_dots_134578 = 0x10028dd,
- braille_dots_234578 = 0x10028de,
- braille_dots_1234578 = 0x10028df,
- braille_dots_678 = 0x10028e0,
- braille_dots_1678 = 0x10028e1,
- braille_dots_2678 = 0x10028e2,
- braille_dots_12678 = 0x10028e3,
- braille_dots_3678 = 0x10028e4,
- braille_dots_13678 = 0x10028e5,
- braille_dots_23678 = 0x10028e6,
- braille_dots_123678 = 0x10028e7,
- braille_dots_4678 = 0x10028e8,
- braille_dots_14678 = 0x10028e9,
- braille_dots_24678 = 0x10028ea,
- braille_dots_124678 = 0x10028eb,
- braille_dots_34678 = 0x10028ec,
- braille_dots_134678 = 0x10028ed,
- braille_dots_234678 = 0x10028ee,
- braille_dots_1234678 = 0x10028ef,
- braille_dots_5678 = 0x10028f0,
- braille_dots_15678 = 0x10028f1,
- braille_dots_25678 = 0x10028f2,
- braille_dots_125678 = 0x10028f3,
- braille_dots_35678 = 0x10028f4,
- braille_dots_135678 = 0x10028f5,
- braille_dots_235678 = 0x10028f6,
- braille_dots_1235678 = 0x10028f7,
- braille_dots_45678 = 0x10028f8,
- braille_dots_145678 = 0x10028f9,
- braille_dots_245678 = 0x10028fa,
- braille_dots_1245678 = 0x10028fb,
- braille_dots_345678 = 0x10028fc,
- braille_dots_1345678 = 0x10028fd,
- braille_dots_2345678 = 0x10028fe,
- braille_dots_12345678 = 0x10028ff,
- Sinh_ng = 0x1000d82,
- Sinh_h2 = 0x1000d83,
- Sinh_a = 0x1000d85,
- Sinh_aa = 0x1000d86,
- Sinh_ae = 0x1000d87,
- Sinh_aee = 0x1000d88,
- Sinh_i = 0x1000d89,
- Sinh_ii = 0x1000d8a,
- Sinh_u = 0x1000d8b,
- Sinh_uu = 0x1000d8c,
- Sinh_ri = 0x1000d8d,
- Sinh_rii = 0x1000d8e,
- Sinh_lu = 0x1000d8f,
- Sinh_luu = 0x1000d90,
- Sinh_e = 0x1000d91,
- Sinh_ee = 0x1000d92,
- Sinh_ai = 0x1000d93,
- Sinh_o = 0x1000d94,
- Sinh_oo = 0x1000d95,
- Sinh_au = 0x1000d96,
- Sinh_ka = 0x1000d9a,
- Sinh_kha = 0x1000d9b,
- Sinh_ga = 0x1000d9c,
- Sinh_gha = 0x1000d9d,
- Sinh_ng2 = 0x1000d9e,
- Sinh_nga = 0x1000d9f,
- Sinh_ca = 0x1000da0,
- Sinh_cha = 0x1000da1,
- Sinh_ja = 0x1000da2,
- Sinh_jha = 0x1000da3,
- Sinh_nya = 0x1000da4,
- Sinh_jnya = 0x1000da5,
- Sinh_nja = 0x1000da6,
- Sinh_tta = 0x1000da7,
- Sinh_ttha = 0x1000da8,
- Sinh_dda = 0x1000da9,
- Sinh_ddha = 0x1000daa,
- Sinh_nna = 0x1000dab,
- Sinh_ndda = 0x1000dac,
- Sinh_tha = 0x1000dad,
- Sinh_thha = 0x1000dae,
- Sinh_dha = 0x1000daf,
- Sinh_dhha = 0x1000db0,
- Sinh_na = 0x1000db1,
- Sinh_ndha = 0x1000db3,
- Sinh_pa = 0x1000db4,
- Sinh_pha = 0x1000db5,
- Sinh_ba = 0x1000db6,
- Sinh_bha = 0x1000db7,
- Sinh_ma = 0x1000db8,
- Sinh_mba = 0x1000db9,
- Sinh_ya = 0x1000dba,
- Sinh_ra = 0x1000dbb,
- Sinh_la = 0x1000dbd,
- Sinh_va = 0x1000dc0,
- Sinh_sha = 0x1000dc1,
- Sinh_ssha = 0x1000dc2,
- Sinh_sa = 0x1000dc3,
- Sinh_ha = 0x1000dc4,
- Sinh_lla = 0x1000dc5,
- Sinh_fa = 0x1000dc6,
- Sinh_al = 0x1000dca,
- Sinh_aa2 = 0x1000dcf,
- Sinh_ae2 = 0x1000dd0,
- Sinh_aee2 = 0x1000dd1,
- Sinh_i2 = 0x1000dd2,
- Sinh_ii2 = 0x1000dd3,
- Sinh_u2 = 0x1000dd4,
- Sinh_uu2 = 0x1000dd6,
- Sinh_ru2 = 0x1000dd8,
- Sinh_e2 = 0x1000dd9,
- Sinh_ee2 = 0x1000dda,
- Sinh_ai2 = 0x1000ddb,
- Sinh_o2 = 0x1000ddc,
- Sinh_oo2 = 0x1000ddd,
- Sinh_au2 = 0x1000dde,
- Sinh_lu2 = 0x1000ddf,
- Sinh_ruu2 = 0x1000df2,
- Sinh_luu2 = 0x1000df3,
- Sinh_kunddaliya = 0x1000df4,
- XF86ModeLock = 0x1008FF01,
- XF86MonBrightnessUp = 0x1008FF02,
- XF86MonBrightnessDown = 0x1008FF03,
- XF86KbdLightOnOff = 0x1008FF04,
- XF86KbdBrightnessUp = 0x1008FF05,
- XF86KbdBrightnessDown = 0x1008FF06,
- XF86Standby = 0x1008FF10,
- XF86AudioLowerVolume = 0x1008FF11,
- XF86AudioMute = 0x1008FF12,
- XF86AudioRaiseVolume = 0x1008FF13,
- XF86AudioPlay = 0x1008FF14,
- XF86AudioStop = 0x1008FF15,
- XF86AudioPrev = 0x1008FF16,
- XF86AudioNext = 0x1008FF17,
- XF86HomePage = 0x1008FF18,
- XF86Mail = 0x1008FF19,
- XF86Start = 0x1008FF1A,
- XF86Search = 0x1008FF1B,
- XF86AudioRecord = 0x1008FF1C,
- XF86Calculator = 0x1008FF1D,
- XF86Memo = 0x1008FF1E,
- XF86ToDoList = 0x1008FF1F,
- XF86Calendar = 0x1008FF20,
- XF86PowerDown = 0x1008FF21,
- XF86ContrastAdjust = 0x1008FF22,
- XF86RockerUp = 0x1008FF23,
- XF86RockerDown = 0x1008FF24,
- XF86RockerEnter = 0x1008FF25,
- XF86Back = 0x1008FF26,
- XF86Forward = 0x1008FF27,
- XF86Stop = 0x1008FF28,
- XF86Refresh = 0x1008FF29,
- XF86PowerOff = 0x1008FF2A,
- XF86WakeUp = 0x1008FF2B,
- XF86Eject = 0x1008FF2C,
- XF86ScreenSaver = 0x1008FF2D,
- XF86WWW = 0x1008FF2E,
- XF86Sleep = 0x1008FF2F,
- XF86Favorites = 0x1008FF30,
- XF86AudioPause = 0x1008FF31,
- XF86AudioMedia = 0x1008FF32,
- XF86MyComputer = 0x1008FF33,
- XF86VendorHome = 0x1008FF34,
- XF86LightBulb = 0x1008FF35,
- XF86Shop = 0x1008FF36,
- XF86History = 0x1008FF37,
- XF86OpenURL = 0x1008FF38,
- XF86AddFavorite = 0x1008FF39,
- XF86HotLinks = 0x1008FF3A,
- XF86BrightnessAdjust = 0x1008FF3B,
- XF86Finance = 0x1008FF3C,
- XF86Community = 0x1008FF3D,
- XF86AudioRewind = 0x1008FF3E,
- XF86BackForward = 0x1008FF3F,
- XF86Launch0 = 0x1008FF40,
- XF86Launch1 = 0x1008FF41,
- XF86Launch2 = 0x1008FF42,
- XF86Launch3 = 0x1008FF43,
- XF86Launch4 = 0x1008FF44,
- XF86Launch5 = 0x1008FF45,
- XF86Launch6 = 0x1008FF46,
- XF86Launch7 = 0x1008FF47,
- XF86Launch8 = 0x1008FF48,
- XF86Launch9 = 0x1008FF49,
- XF86LaunchA = 0x1008FF4A,
- XF86LaunchB = 0x1008FF4B,
- XF86LaunchC = 0x1008FF4C,
- XF86LaunchD = 0x1008FF4D,
- XF86LaunchE = 0x1008FF4E,
- XF86LaunchF = 0x1008FF4F,
- XF86ApplicationLeft = 0x1008FF50,
- XF86ApplicationRight = 0x1008FF51,
- XF86Book = 0x1008FF52,
- XF86CD = 0x1008FF53,
- XF86Calculater = 0x1008FF54,
- XF86Clear = 0x1008FF55,
- XF86Close = 0x1008FF56,
- XF86Copy = 0x1008FF57,
- XF86Cut = 0x1008FF58,
- XF86Display = 0x1008FF59,
- XF86DOS = 0x1008FF5A,
- XF86Documents = 0x1008FF5B,
- XF86Excel = 0x1008FF5C,
- XF86Explorer = 0x1008FF5D,
- XF86Game = 0x1008FF5E,
- XF86Go = 0x1008FF5F,
- XF86iTouch = 0x1008FF60,
- XF86LogOff = 0x1008FF61,
- XF86Market = 0x1008FF62,
- XF86Meeting = 0x1008FF63,
- XF86MenuKB = 0x1008FF65,
- XF86MenuPB = 0x1008FF66,
- XF86MySites = 0x1008FF67,
- XF86New = 0x1008FF68,
- XF86News = 0x1008FF69,
- XF86OfficeHome = 0x1008FF6A,
- XF86Open = 0x1008FF6B,
- XF86Option = 0x1008FF6C,
- XF86Paste = 0x1008FF6D,
- XF86Phone = 0x1008FF6E,
- XF86Q = 0x1008FF70,
- XF86Reply = 0x1008FF72,
- XF86Reload = 0x1008FF73,
- XF86RotateWindows = 0x1008FF74,
- XF86RotationPB = 0x1008FF75,
- XF86RotationKB = 0x1008FF76,
- XF86Save = 0x1008FF77,
- XF86ScrollUp = 0x1008FF78,
- XF86ScrollDown = 0x1008FF79,
- XF86ScrollClick = 0x1008FF7A,
- XF86Send = 0x1008FF7B,
- XF86Spell = 0x1008FF7C,
- XF86SplitScreen = 0x1008FF7D,
- XF86Support = 0x1008FF7E,
- XF86TaskPane = 0x1008FF7F,
- XF86Terminal = 0x1008FF80,
- XF86Tools = 0x1008FF81,
- XF86Travel = 0x1008FF82,
- XF86UserPB = 0x1008FF84,
- XF86User1KB = 0x1008FF85,
- XF86User2KB = 0x1008FF86,
- XF86Video = 0x1008FF87,
- XF86WheelButton = 0x1008FF88,
- XF86Word = 0x1008FF89,
- XF86Xfer = 0x1008FF8A,
- XF86ZoomIn = 0x1008FF8B,
- XF86ZoomOut = 0x1008FF8C,
- XF86Away = 0x1008FF8D,
- XF86Messenger = 0x1008FF8E,
- XF86WebCam = 0x1008FF8F,
- XF86MailForward = 0x1008FF90,
- XF86Pictures = 0x1008FF91,
- XF86Music = 0x1008FF92,
- XF86Battery = 0x1008FF93,
- XF86Bluetooth = 0x1008FF94,
- XF86WLAN = 0x1008FF95,
- XF86UWB = 0x1008FF96,
- XF86AudioForward = 0x1008FF97,
- XF86AudioRepeat = 0x1008FF98,
- XF86AudioRandomPlay = 0x1008FF99,
- XF86Subtitle = 0x1008FF9A,
- XF86AudioCycleTrack = 0x1008FF9B,
- XF86CycleAngle = 0x1008FF9C,
- XF86FrameBack = 0x1008FF9D,
- XF86FrameForward = 0x1008FF9E,
- XF86Time = 0x1008FF9F,
- XF86Select = 0x1008FFA0,
- XF86View = 0x1008FFA1,
- XF86TopMenu = 0x1008FFA2,
- XF86Red = 0x1008FFA3,
- XF86Green = 0x1008FFA4,
- XF86Yellow = 0x1008FFA5,
- XF86Blue = 0x1008FFA6,
- XF86Suspend = 0x1008FFA7,
- XF86Hibernate = 0x1008FFA8,
- XF86TouchpadToggle = 0x1008FFA9,
- XF86TouchpadOn = 0x1008FFB0,
- XF86TouchpadOff = 0x1008FFB1,
- XF86AudioMicMute = 0x1008FFB2,
- XF86Keyboard = 0x1008FFB3,
- XF86WWAN = 0x1008FFB4,
- XF86RFKill = 0x1008FFB5,
- XF86AudioPreset = 0x1008FFB6,
- XF86Switch_VT_1 = 0x1008FE01,
- XF86Switch_VT_2 = 0x1008FE02,
- XF86Switch_VT_3 = 0x1008FE03,
- XF86Switch_VT_4 = 0x1008FE04,
- XF86Switch_VT_5 = 0x1008FE05,
- XF86Switch_VT_6 = 0x1008FE06,
- XF86Switch_VT_7 = 0x1008FE07,
- XF86Switch_VT_8 = 0x1008FE08,
- XF86Switch_VT_9 = 0x1008FE09,
- XF86Switch_VT_10 = 0x1008FE0A,
- XF86Switch_VT_11 = 0x1008FE0B,
- XF86Switch_VT_12 = 0x1008FE0C,
- XF86Ungrab = 0x1008FE20,
- XF86ClearGrab = 0x1008FE21,
- XF86Next_VMode = 0x1008FE22,
- XF86Prev_VMode = 0x1008FE23,
- XF86LogWindowTree = 0x1008FE24,
- XF86LogGrabInfo = 0x1008FE25,
- SunFA_Grave = 0x1005FF00,
- SunFA_Circum = 0x1005FF01,
- SunFA_Tilde = 0x1005FF02,
- SunFA_Acute = 0x1005FF03,
- SunFA_Diaeresis = 0x1005FF04,
- SunFA_Cedilla = 0x1005FF05,
- SunF36 = 0x1005FF10,
- SunF37 = 0x1005FF11,
- SunSys_Req = 0x1005FF60,
- SunPrint_Screen = 0x0000FF61,
- SunCompose = 0x0000FF20,
- SunAltGraph = 0x0000FF7E,
- SunPageUp = 0x0000FF55,
- SunPageDown = 0x0000FF56,
- SunUndo = 0x0000FF65,
- SunAgain = 0x0000FF66,
- SunFind = 0x0000FF68,
- SunStop = 0x0000FF69,
- SunProps = 0x1005FF70,
- SunFront = 0x1005FF71,
- SunCopy = 0x1005FF72,
- SunOpen = 0x1005FF73,
- SunPaste = 0x1005FF74,
- SunCut = 0x1005FF75,
- SunPowerSwitch = 0x1005FF76,
- SunAudioLowerVolume = 0x1005FF77,
- SunAudioMute = 0x1005FF78,
- SunAudioRaiseVolume = 0x1005FF79,
- SunVideoDegauss = 0x1005FF7A,
- SunVideoLowerBrightness = 0x1005FF7B,
- SunVideoRaiseBrightness = 0x1005FF7C,
- SunPowerSwitchShift = 0x1005FF7D,
- Dring_accent = 0x1000FEB0,
- Dcircumflex_accent = 0x1000FE5E,
- Dcedilla_accent = 0x1000FE2C,
- Dacute_accent = 0x1000FE27,
- Dgrave_accent = 0x1000FE60,
- Dtilde = 0x1000FE7E,
- Ddiaeresis = 0x1000FE22,
- DRemove = 0x1000FF00,
- hpClearLine = 0x1000FF6F,
- hpInsertLine = 0x1000FF70,
- hpDeleteLine = 0x1000FF71,
- hpInsertChar = 0x1000FF72,
- hpDeleteChar = 0x1000FF73,
- hpBackTab = 0x1000FF74,
- hpKP_BackTab = 0x1000FF75,
- hpModelock1 = 0x1000FF48,
- hpModelock2 = 0x1000FF49,
- hpReset = 0x1000FF6C,
- hpSystem = 0x1000FF6D,
- hpUser = 0x1000FF6E,
- hpmute_acute = 0x100000A8,
- hpmute_grave = 0x100000A9,
- hpmute_asciicircum = 0x100000AA,
- hpmute_diaeresis = 0x100000AB,
- hpmute_asciitilde = 0x100000AC,
- hplira = 0x100000AF,
- hpguilder = 0x100000BE,
- hpYdiaeresis = 0x100000EE,
- hpIO = 0x100000EE,
- hplongminus = 0x100000F6,
- hpblock = 0x100000FC,
- osfCopy = 0x1004FF02,
- osfCut = 0x1004FF03,
- osfPaste = 0x1004FF04,
- osfBackTab = 0x1004FF07,
- osfBackSpace = 0x1004FF08,
- osfClear = 0x1004FF0B,
- osfEscape = 0x1004FF1B,
- osfAddMode = 0x1004FF31,
- osfPrimaryPaste = 0x1004FF32,
- osfQuickPaste = 0x1004FF33,
- osfPageLeft = 0x1004FF40,
- osfPageUp = 0x1004FF41,
- osfPageDown = 0x1004FF42,
- osfPageRight = 0x1004FF43,
- osfActivate = 0x1004FF44,
- osfMenuBar = 0x1004FF45,
- osfLeft = 0x1004FF51,
- osfUp = 0x1004FF52,
- osfRight = 0x1004FF53,
- osfDown = 0x1004FF54,
- osfEndLine = 0x1004FF57,
- osfBeginLine = 0x1004FF58,
- osfEndData = 0x1004FF59,
- osfBeginData = 0x1004FF5A,
- osfPrevMenu = 0x1004FF5B,
- osfNextMenu = 0x1004FF5C,
- osfPrevField = 0x1004FF5D,
- osfNextField = 0x1004FF5E,
- osfSelect = 0x1004FF60,
- osfInsert = 0x1004FF63,
- osfUndo = 0x1004FF65,
- osfMenu = 0x1004FF67,
- osfCancel = 0x1004FF69,
- osfHelp = 0x1004FF6A,
- osfSelectAll = 0x1004FF71,
- osfDeselectAll = 0x1004FF72,
- osfReselect = 0x1004FF73,
- osfExtend = 0x1004FF74,
- osfRestore = 0x1004FF78,
- osfDelete = 0x1004FFFF,
- Reset = 0x1000FF6C,
- System = 0x1000FF6D,
- User = 0x1000FF6E,
- ClearLine = 0x1000FF6F,
- InsertLine = 0x1000FF70,
- DeleteLine = 0x1000FF71,
- InsertChar = 0x1000FF72,
- DeleteChar = 0x1000FF73,
- BackTab = 0x1000FF74,
- KP_BackTab = 0x1000FF75,
- Ext16bit_L = 0x1000FF76,
- Ext16bit_R = 0x1000FF77,
- mute_acute = 0x100000a8,
- mute_grave = 0x100000a9,
- mute_asciicircum = 0x100000aa,
- mute_diaeresis = 0x100000ab,
- mute_asciitilde = 0x100000ac,
- lira = 0x100000af,
- guilder = 0x100000be,
- IO = 0x100000ee,
- longminus = 0x100000f6,
- block = 0x100000fc,
-
- }
-
- enum xkb_key_direction : byte {
- KEY_UP, /**< The key was released. */
- KEY_DOWN /**< The key was pressed. */
- }
-
- [Flags]
- enum xkb_state_component : ushort {
- XKB_STATE_MODS_DEPRESSED = (1 << 0),
- XKB_STATE_MODS_LATCHED = (1 << 1),
- XKB_STATE_MODS_LOCKED = (1 << 2),
- XKB_STATE_MODS_EFFECTIVE = (1 << 3),
- XKB_STATE_LAYOUT_DEPRESSED = (1 << 4),
- XKB_STATE_LAYOUT_LATCHED = (1 << 5),
- XKB_STATE_LAYOUT_LOCKED = (1 << 6),
- XKB_STATE_LAYOUT_EFFECTIVE = (1 << 7),
- XKB_STATE_LEDS = (1 << 8)
- }
-
- const string XKB_MOD_NAME_SHIFT ="Shift";
- const string XKB_MOD_NAME_CAPS = "Lock";
- const string XKB_MOD_NAME_CTRL = "Control";
- const string XKB_MOD_NAME_ALT = "Mod1";
- const string XKB_MOD_NAME_NUM = "Mod2";
- const string XKB_MOD_NAME_LOGO = "Mod4";
-
- const string XKB_LED_NAME_CAPS = "Caps Lock";
- const string XKB_LED_NAME_NUM = "Num Lock";
- const string XKB_LED_NAME_SCROLL = "Scroll Lock";
-
- #region pinvoke XKB
-
- [DllImportAttribute("xkbcommon")]
- static extern IntPtr xkb_context_new (int flags);
- [DllImportAttribute("xkbcommon")]
- static extern xkb_keysym xkb_state_key_get_one_sym (IntPtr state, xkb_keycode_t keycode);
- [DllImportAttribute("xkbcommon")]
- static extern int xkb_state_key_get_syms (IntPtr state, xkb_keycode_t keycode, ref IntPtr syms_out);
-
- [DllImportAttribute("xkbcommon")]
- static extern xkb_mod_index_t xkb_keymap_num_mods (IntPtr keymap);
- [DllImportAttribute("xkbcommon")]
- static extern xkb_mod_index_t xkb_keymap_mod_get_index (IntPtr keymap, string name);
- [DllImportAttribute("xkbcommon")]
- static extern bool xkb_state_mod_index_is_active (IntPtr state, xkb_mod_index_t idx, xkb_state_component type);
- [DllImportAttribute("xkbcommon")]
- static extern int xkb_state_mod_name_is_active (IntPtr state, string mod_name, xkb_state_component type);
-
- [DllImportAttribute("xkbcommon")]
- static extern UInt32 xkb_state_key_get_utf32 (IntPtr state, xkb_keycode_t key);
- [DllImportAttribute("xkbcommon")]
- static extern void xkb_state_unref (IntPtr state);
- [DllImportAttribute("xkbcommon")]
- static extern void xkb_keymap_unref (IntPtr keymap);
- [DllImportAttribute("xkbcommon")]
- static extern void xkb_context_unref (IntPtr ctx);
-
- [DllImportAttribute("xkbcommon")]
- static extern xkb_state_component xkb_state_update_key(IntPtr state, xkb_keycode_t key, xkb_key_direction direction);
-
- [DllImportAttribute("xkbcommon-x11.so.0")]
- static extern int xkb_x11_setup_xkb_extension (IntPtr connection,
- UInt16 major_xkb_version, UInt16 minor_xkb_version,
- byte xkb_x11_setup_xkb_extension_flags,
- out UInt16 major_xkb_version_out,
- out UInt16 minor_xkb_version_out,
- out byte base_event_out,
- out byte base_error_out);
- [DllImportAttribute("xkbcommon-x11.so.0")]
- static extern int xkb_x11_get_core_keyboard_device_id(IntPtr connection);
- [DllImportAttribute("xkbcommon-x11.so.0")]
- static extern IntPtr xkb_x11_keymap_new_from_device (IntPtr context, IntPtr connection,
- int device_id, byte flags);
- [DllImportAttribute("xkbcommon-x11.so.0")]
- static extern IntPtr xkb_x11_state_new_from_device (IntPtr xkbKeymap, IntPtr connection, int device_id);
- #endregion
- xkb_mod_index_t ModIdxShift;
- xkb_mod_index_t ModIdxCtrl;
- xkb_mod_index_t ModIdxAlt;
- xkb_mod_index_t ModIdxLogo;
- xkb_mod_index_t ModIdxCapsLock;
- xkb_mod_index_t ModIdxNumLock;
-
- IntPtr xkbCtx, xkbKeymap, xkbState;
-
- Interface iFace;
-
-
- public void HandleEvent (uint keycode, bool pressed) {
- xkb_keysym ks = xkb_state_key_get_one_sym (xkbState, keycode);
- xkb_key_direction keyDir = xkb_key_direction.KEY_DOWN;
-
- if (pressed) {
- iFace.ProcessKeyDown ((Key)ks);
-
- IntPtr ptrKeySyms = IntPtr.Zero;
-
- int nbKeySyms = xkb_state_key_get_syms (xkbState, keycode, ref ptrKeySyms);
- int[] keySyms = new int[nbKeySyms];
- Marshal.Copy (ptrKeySyms, keySyms, 0, nbKeySyms);
-
- uint utf32 = xkb_state_key_get_utf32 (xkbState, keycode);
- char c = char.ConvertFromUtf32 ((int)utf32) [0];
-
- if (!char.IsControl (c))
- iFace.ProcessKeyPress (c);
- } else {
- keyDir = xkb_key_direction.KEY_UP;
- iFace.ProcessKeyUp ((Key)ks);
- }
-
- xkb_state_update_key (xkbState, keycode, keyDir);
- }
- public bool IsDown (Key key) {
- return false;
- }
- public bool Shift {
- get {
- return xkb_state_mod_index_is_active (xkbState, ModIdxShift, xkb_state_component.XKB_STATE_MODS_EFFECTIVE);
- }
- }
- public bool Ctrl {
- get {
- return xkb_state_mod_index_is_active (xkbState, ModIdxCtrl, xkb_state_component.XKB_STATE_MODS_EFFECTIVE);
- }
- }
- public bool Alt {
- get {
- return xkb_state_mod_index_is_active (xkbState, ModIdxAlt, xkb_state_component.XKB_STATE_MODS_EFFECTIVE);
- }
- }
- public void Destroy () {
- xkb_state_unref (xkbState);
- xkb_keymap_unref (xkbKeymap);
- xkb_context_unref (xkbCtx);
- }
-
-
- public XCBKeyboard (IntPtr xcbConnection, Interface _iface)
- {
- iFace = _iface;
-
- ushort xkb_maj, xkb_min;
- byte base_evt, base_err;
-
- xkbCtx = xkb_context_new (0);
- xkb_x11_setup_xkb_extension (xcbConnection, 1, 0, 0, out xkb_maj, out xkb_min, out base_evt, out base_err);
- int kb = xkb_x11_get_core_keyboard_device_id (xcbConnection);
- xkbKeymap = xkb_x11_keymap_new_from_device (xkbCtx, xcbConnection, kb, 0);
- xkbState = xkb_x11_state_new_from_device (xkbKeymap, xcbConnection, kb);
-
- ModIdxShift = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_SHIFT);
- ModIdxCtrl = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_CTRL);
- ModIdxAlt = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_ALT);
- ModIdxLogo = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_LOGO);
- ModIdxCapsLock = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_CAPS);
- ModIdxNumLock = xkb_keymap_mod_get_index (xkbKeymap, XKB_MOD_NAME_NUM);
- }
- }
-}
-
+++ /dev/null
-//
-// XCursor.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.IO;
-using System.Diagnostics;
-using System.Collections.Generic;
-
-namespace Crow
-{
- public class XCursorFile
- {
- const uint XC_TYPE_IMG = 0xfffd0002;
-
- class toc
- {
- public uint type;
- public uint subtype;
- public uint pos;
-
- public toc(BinaryReader sr)
- {
- type = sr.ReadUInt32();
- subtype = sr.ReadUInt32();
- pos = sr.ReadUInt32();
- }
- }
-
- public List<XCursor> Cursors = new List<XCursor>();
-
-
- static XCursorFile loadFromStream(Stream s)
- {
- List<toc> tocList = new List<toc> ();
- XCursorFile tmp = new XCursorFile ();
-
- using (BinaryReader sr = new BinaryReader (s)) {
- byte[] data;
- //magic: CARD32 ’Xcur’ (0x58, 0x63, 0x75, 0x72)
- if (new string (sr.ReadChars (4)) != "Xcur") {
- Debug.WriteLine ("XCursor Load error: Wrong magic");
- return null;
- }
- //header: CARD32 bytes in this header
- uint headerLength = sr.ReadUInt32 ();
- //version: CARD32 file version number
- uint version = sr.ReadUInt32 ();
- //ntoc: CARD32 number of toc entries
- uint nbToc = sr.ReadUInt32 ();
- //toc: LISTofTOC table of contents
- for (uint i = 0; i < nbToc; i++) {
- tocList.Add (new toc (sr));
- }
-
- foreach (toc t in tocList) {
- if (t.type != XC_TYPE_IMG)
- continue;
-
- sr.BaseStream.Seek (t.pos, SeekOrigin.Begin);
- tmp.Cursors.Add(imageLoad (sr));
- }
- }
- return tmp;
- }
-
- public static XCursorFile Load(Interface iface, string path)
- {
- return loadFromStream (iface.GetStreamFromPath (path));
- }
-
- static XCursor imageLoad(BinaryReader sr)
- {
- XCursor tmp = new XCursor();
- // header: 36 Image headers are 36 bytes
- uint header = sr.ReadUInt32();
- // type: 0xfffd0002 Image type is 0xfffd0002
- uint type = sr.ReadUInt32();
- // subtype: CARD32 Image subtype is the nominal size
- uint subtype = sr.ReadUInt32();
- // version: 1
- uint version = sr.ReadUInt32();
- // width: CARD32 Must be less than or equal to 0x7fff
- tmp.Width = sr.ReadUInt32();
- // height: CARD32 Must be less than or equal to 0x7fff
- tmp.Height = sr.ReadUInt32();
- // xhot: CARD32 Must be less than or equal to width
- tmp.Xhot = sr.ReadUInt32();
- // yhot: CARD32 Must be less than or equal to height
- tmp.Yhot = sr.ReadUInt32();
- // delay: CARD32 Delay between animation frames in milliseconds
- tmp.Delay = sr.ReadUInt32();
- // pixels: LISTofCARD32 Packed ARGB format pixels
- tmp.data = sr.ReadBytes((int)(tmp.Width * tmp.Height * 4));
- return tmp;
- }
- }
- public class XCursor
- {
- public static XCursor Default;
- public static XCursor Cross;
- public static XCursor Arrow;
- public static XCursor Text;
- public static XCursor SW;
- public static XCursor SE;
- public static XCursor NW;
- public static XCursor NE;
- public static XCursor N;
- public static XCursor S;
- public static XCursor V;
- public static XCursor H;
-
- public uint Width;
- public uint Height;
- public uint Xhot;
- public uint Yhot;
- public uint Delay;
- public byte[] data;
-
- public XCursor ()
- {
- }
-// public static implicit operator MouseCursor(XCursor xc)
-// {
-// return new MouseCursor((int)xc.Xhot, (int)xc.Yhot, (int)xc.Width, (int)xc.Height,xc.data);
-// }
- }
-}
-
+++ /dev/null
-//
-// XCBKeyboard.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using System.Runtime.InteropServices;
-
-namespace Crow.XLib
-{
- public class X11Keyboard
- {
- #region PInvoke
- [DllImportAttribute("X11")]
- static extern IntPtr XFree(IntPtr data);
- [DllImport ("libX11")]
- static extern void XDisplayKeycodes (IntPtr disp, out int min, out int max);
- [DllImport ("libX11")]
- static extern IntPtr XGetKeyboardMapping (IntPtr disp, byte first_keycode, int keycode_count,
- out int keysyms_per_keycode_return);
- [DllImport ("libX11")]
- unsafe static extern byte* XGetModifierMapping (IntPtr disp);
- [DllImport ("libX11")]
- static extern uint XKeycodeToKeysym (IntPtr display, int keycode, int index);
- #endregion
-
- #region IKeyboard implementation
-
- public event EventHandler<KeyEventArgs> KeyDown;
- public event EventHandler<KeyEventArgs> KeyUp;
- public event EventHandler<KeyPressEventArgs> KeyPress;
-
- public void HandleEvent (uint keycode, bool pressed) {
- /*int min_keycode, max_keycode, keysyms_per_keycode;
- XLib.NativeMethods.XDisplayKeycodes (xDisp, out min_keycode, out max_keycode);
-
- IntPtr ksp = XLib.NativeMethods.XGetKeyboardMapping (xDisp, (byte)min_keycode,
- max_keycode + 1 - min_keycode, out keysyms_per_keycode);
- XLib.NativeMethods.XFree (ksp);*/
-
- uint keySym;
- keySym = XKeycodeToKeysym (xDisp, (int)keycode, 0);
- char c = (char)keySym;
- if (pressed)
- KeyDown.Raise (this, new KeyEventArgs ((Key)keySym, false));
- else
- KeyUp.Raise (this, new KeyEventArgs ((Key)keySym, false));
- }
- public bool IsDown (Key key) {
- throw new NotImplementedException();
- }
- public bool Shift {
- get {
- throw new NotImplementedException();
- }
- }
- public bool Ctrl {
- get {
- throw new NotImplementedException ();
- }
- }
- public bool Alt {
- get {
- throw new NotImplementedException ();
- }
- }
- public void Destroy () {
-
- }
- #endregion
-
-
- IntPtr xDisp;
-
- public X11Keyboard (IntPtr _xDisp)
- {
- xDisp = _xDisp;
-
- int min_keycode, max_keycode, keysyms_per_keycode;
-
- XDisplayKeycodes (xDisp, out min_keycode, out max_keycode);
- IntPtr ksp = XGetKeyboardMapping (xDisp, (byte) min_keycode,
- max_keycode + 1 - min_keycode, out keysyms_per_keycode);
- XFree (ksp);
-
- unsafe {
- byte* modmap_unmanaged = XGetModifierMapping (xDisp);
- int nummodmap = 0;
- int* ptr = (int*)modmap_unmanaged;
- nummodmap = ptr [0];
-
- for (int i = 0; i< nummodmap; i++) {
- Console.WriteLine(modmap_unmanaged[i+4]);
- }
- XFree ((IntPtr)modmap_unmanaged);
- }
- }
- }
-}
-
+++ /dev/null
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software",, to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2004 Novell, Inc.
-//
-// Authors:
-// Peter Bartok pbartok@novell.com
-//
-
-
-// NOT COMPLETE
-
-using System;
-using System.ComponentModel;
-using System.Collections;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using System.Threading;
-using System.Reflection;
-
-// X11 Version
-namespace Crow.XLib {
- //
- // In the structures below, fields of type long are mapped to IntPtr.
- // This will work on all platforms where sizeof(long)==sizeof(void*), which
- // is almost all platforms except WIN64.
- //
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XAnyEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XKeyEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr root;
- public IntPtr subwindow;
- public IntPtr time;
- public int x;
- public int y;
- public int x_root;
- public int y_root;
- public int state;
- public int keycode;
- public bool same_screen;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XButtonEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr root;
- public IntPtr subwindow;
- public IntPtr time;
- public int x;
- public int y;
- public int x_root;
- public int y_root;
- public int state;
- public int button;
- public bool same_screen;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XMotionEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr root;
- public IntPtr subwindow;
- public IntPtr time;
- public int x;
- public int y;
- public int x_root;
- public int y_root;
- public int state;
- public byte is_hint;
- public bool same_screen;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XCrossingEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr root;
- public IntPtr subwindow;
- public IntPtr time;
- public int x;
- public int y;
- public int x_root;
- public int y_root;
- public NotifyMode mode;
- public NotifyDetail detail;
- public bool same_screen;
- public bool focus;
- public int state;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XFocusChangeEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public int mode;
- public NotifyDetail detail;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XKeymapEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public byte key_vector0;
- public byte key_vector1;
- public byte key_vector2;
- public byte key_vector3;
- public byte key_vector4;
- public byte key_vector5;
- public byte key_vector6;
- public byte key_vector7;
- public byte key_vector8;
- public byte key_vector9;
- public byte key_vector10;
- public byte key_vector11;
- public byte key_vector12;
- public byte key_vector13;
- public byte key_vector14;
- public byte key_vector15;
- public byte key_vector16;
- public byte key_vector17;
- public byte key_vector18;
- public byte key_vector19;
- public byte key_vector20;
- public byte key_vector21;
- public byte key_vector22;
- public byte key_vector23;
- public byte key_vector24;
- public byte key_vector25;
- public byte key_vector26;
- public byte key_vector27;
- public byte key_vector28;
- public byte key_vector29;
- public byte key_vector30;
- public byte key_vector31;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XExposeEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public int x;
- public int y;
- public int width;
- public int height;
- public int count;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XGraphicsExposeEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr drawable;
- public int x;
- public int y;
- public int width;
- public int height;
- public int count;
- public int major_code;
- public int minor_code;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XNoExposeEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr drawable;
- public int major_code;
- public int minor_code;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XVisibilityEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public int state;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XCreateWindowEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr parent;
- public IntPtr window;
- public int x;
- public int y;
- public int width;
- public int height;
- public int border_width;
- public bool override_redirect;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XDestroyWindowEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XUnmapEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- public bool from_configure;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XMapEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- public bool override_redirect;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XMapRequestEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr parent;
- public IntPtr window;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XReparentEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- public IntPtr parent;
- public int x;
- public int y;
- public bool override_redirect;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XConfigureEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- public int x;
- public int y;
- public int width;
- public int height;
- public int border_width;
- public IntPtr above;
- public bool override_redirect;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XGravityEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- public int x;
- public int y;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XResizeRequestEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public int width;
- public int height;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XConfigureRequestEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr parent;
- public IntPtr window;
- public int x;
- public int y;
- public int width;
- public int height;
- public int border_width;
- public IntPtr above;
- public int detail;
- public IntPtr value_mask;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XCirculateEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr xevent;
- public IntPtr window;
- public int place;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XCirculateRequestEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr parent;
- public IntPtr window;
- public int place;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XPropertyEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr atom;
- public IntPtr time;
- public int state;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XSelectionClearEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr selection;
- public IntPtr time;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XSelectionRequestEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr owner;
- public IntPtr requestor;
- public IntPtr selection;
- public IntPtr target;
- public IntPtr property;
- public IntPtr time;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XSelectionEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr requestor;
- public IntPtr selection;
- public IntPtr target;
- public IntPtr property;
- public IntPtr time;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XColormapEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr colormap;
- public bool c_new;
- public int state;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XClientMessageEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public IntPtr message_type;
- public int format;
- public IntPtr ptr1;
- public IntPtr ptr2;
- public IntPtr ptr3;
- public IntPtr ptr4;
- public IntPtr ptr5;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XMappingEvent {
- public XEventName type;
- public IntPtr serial;
- public bool send_event;
- public IntPtr display;
- public IntPtr window;
- public int request;
- public int first_keycode;
- public int count;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XErrorEvent {
- public XEventName type;
- public IntPtr display;
- public IntPtr resourceid;
- public IntPtr serial;
- public byte error_code;
- public XRequest request_code;
- public byte minor_code;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XEventPad {
- public IntPtr pad0;
- public IntPtr pad1;
- public IntPtr pad2;
- public IntPtr pad3;
- public IntPtr pad4;
- public IntPtr pad5;
- public IntPtr pad6;
- public IntPtr pad7;
- public IntPtr pad8;
- public IntPtr pad9;
- public IntPtr pad10;
- public IntPtr pad11;
- public IntPtr pad12;
- public IntPtr pad13;
- public IntPtr pad14;
- public IntPtr pad15;
- public IntPtr pad16;
- public IntPtr pad17;
- public IntPtr pad18;
- public IntPtr pad19;
- public IntPtr pad20;
- public IntPtr pad21;
- public IntPtr pad22;
- public IntPtr pad23;
- }
-
- [StructLayout(LayoutKind.Explicit)]
- public struct XEvent {
- [ FieldOffset(0) ] public XEventName type;
- [ FieldOffset(0) ] public XAnyEvent AnyEvent;
- [ FieldOffset(0) ] public XKeyEvent KeyEvent;
- [ FieldOffset(0) ] public XButtonEvent ButtonEvent;
- [ FieldOffset(0) ] public XMotionEvent MotionEvent;
- [ FieldOffset(0) ] public XCrossingEvent CrossingEvent;
- [ FieldOffset(0) ] public XFocusChangeEvent FocusChangeEvent;
- [ FieldOffset(0) ] public XExposeEvent ExposeEvent;
- [ FieldOffset(0) ] public XGraphicsExposeEvent GraphicsExposeEvent;
- [ FieldOffset(0) ] public XNoExposeEvent NoExposeEvent;
- [ FieldOffset(0) ] public XVisibilityEvent VisibilityEvent;
- [ FieldOffset(0) ] public XCreateWindowEvent CreateWindowEvent;
- [ FieldOffset(0) ] public XDestroyWindowEvent DestroyWindowEvent;
- [ FieldOffset(0) ] public XUnmapEvent UnmapEvent;
- [ FieldOffset(0) ] public XMapEvent MapEvent;
- [ FieldOffset(0) ] public XMapRequestEvent MapRequestEvent;
- [ FieldOffset(0) ] public XReparentEvent ReparentEvent;
- [ FieldOffset(0) ] public XConfigureEvent ConfigureEvent;
- [ FieldOffset(0) ] public XGravityEvent GravityEvent;
- [ FieldOffset(0) ] public XResizeRequestEvent ResizeRequestEvent;
- [ FieldOffset(0) ] public XConfigureRequestEvent ConfigureRequestEvent;
- [ FieldOffset(0) ] public XCirculateEvent CirculateEvent;
- [ FieldOffset(0) ] public XCirculateRequestEvent CirculateRequestEvent;
- [ FieldOffset(0) ] public XPropertyEvent PropertyEvent;
- [ FieldOffset(0) ] public XSelectionClearEvent SelectionClearEvent;
- [ FieldOffset(0) ] public XSelectionRequestEvent SelectionRequestEvent;
- [ FieldOffset(0) ] public XSelectionEvent SelectionEvent;
- [ FieldOffset(0) ] public XColormapEvent ColormapEvent;
- [ FieldOffset(0) ] public XClientMessageEvent ClientMessageEvent;
- [ FieldOffset(0) ] public XMappingEvent MappingEvent;
- [ FieldOffset(0) ] public XErrorEvent ErrorEvent;
- [ FieldOffset(0) ] public XKeymapEvent KeymapEvent;
-
- //[MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=24)]
- //[ FieldOffset(0) ] public int[] pad;
- [ FieldOffset(0) ] public XEventPad Pad;
- public override string ToString() {
- switch (type)
- {
- case XEventName.ButtonPress:
- case XEventName.ButtonRelease:
- return ToString (ButtonEvent);
- case XEventName.CirculateNotify:
- case XEventName.CirculateRequest:
- return ToString (CirculateEvent);
- case XEventName.ClientMessage:
- return ToString (ClientMessageEvent);
- case XEventName.ColormapNotify:
- return ToString (ColormapEvent);
- case XEventName.ConfigureNotify:
- return ToString (ConfigureEvent);
- case XEventName.ConfigureRequest:
- return ToString (ConfigureRequestEvent);
- case XEventName.CreateNotify:
- return ToString (CreateWindowEvent);
- case XEventName.DestroyNotify:
- return ToString (DestroyWindowEvent);
- case XEventName.Expose:
- return ToString (ExposeEvent);
- case XEventName.FocusIn:
- case XEventName.FocusOut:
- return ToString (FocusChangeEvent);
- case XEventName.GraphicsExpose:
- return ToString (GraphicsExposeEvent);
- case XEventName.GravityNotify:
- return ToString (GravityEvent);
- case XEventName.KeymapNotify:
- return ToString (KeymapEvent);
- case XEventName.MapNotify:
- return ToString (MapEvent);
- case XEventName.MappingNotify:
- return ToString (MappingEvent);
- case XEventName.MapRequest:
- return ToString (MapRequestEvent);
- case XEventName.MotionNotify:
- return ToString (MotionEvent);
- case XEventName.NoExpose:
- return ToString (NoExposeEvent);
- case XEventName.PropertyNotify:
- return ToString (PropertyEvent);
- case XEventName.ReparentNotify:
- return ToString (ReparentEvent);
- case XEventName.ResizeRequest:
- return ToString (ResizeRequestEvent);
- case XEventName.SelectionClear:
- return ToString (SelectionClearEvent);
- case XEventName.SelectionNotify:
- return ToString (SelectionEvent);
- case XEventName.SelectionRequest:
- return ToString (SelectionRequestEvent);
- case XEventName.UnmapNotify:
- return ToString (UnmapEvent);
- case XEventName.VisibilityNotify:
- return ToString (VisibilityEvent);
- case XEventName.EnterNotify:
- case XEventName.LeaveNotify:
- return ToString (CrossingEvent);
- default:
- return type.ToString ();
- }
- }
-
- public static string ToString (object ev)
- {
- string result = string.Empty;
- Type type = ev.GetType ();
- System.Reflection.FieldInfo [] fields = type.GetFields (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Instance);
- for (int i = 0; i < fields.Length; i++) {
- if (result != string.Empty) {
- result += ", ";
- }
- object value = fields [i].GetValue (ev);
- result += fields [i].Name + "=" + (value == null ? "<null>" : value.ToString ());
- }
- return type.Name + " (" + result + ")";
- }
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XSetWindowAttributes {
- public IntPtr background_pixmap;
- public IntPtr background_pixel;
- public IntPtr border_pixmap;
- public IntPtr border_pixel;
- public Gravity bit_gravity;
- public Gravity win_gravity;
- public int backing_store;
- public IntPtr backing_planes;
- public IntPtr backing_pixel;
- public bool save_under;
- public IntPtr event_mask;
- public IntPtr do_not_propagate_mask;
- public bool override_redirect;
- public IntPtr colormap;
- public IntPtr cursor;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XWindowAttributes {
- public int x;
- public int y;
- public int width;
- public int height;
- public int border_width;
- public int depth;
- public IntPtr visual;
- public IntPtr root;
- public int c_class;
- public Gravity bit_gravity;
- public Gravity win_gravity;
- public int backing_store;
- public IntPtr backing_planes;
- public IntPtr backing_pixel;
- public bool save_under;
- public IntPtr colormap;
- public bool map_installed;
- public MapState map_state;
- public IntPtr all_event_masks;
- public IntPtr your_event_mask;
- public IntPtr do_not_propagate_mask;
- public bool override_direct;
- public IntPtr screen;
-
- public override string ToString ()
- {
- return XEvent.ToString (this);
- }
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XTextProperty {
- public string value;
- public IntPtr encoding;
- public int format;
- public IntPtr nitems;
- }
-
- public enum XWindowClass {
- InputOutput = 1,
- InputOnly = 2
- }
-
- public enum XEventName {
- KeyPress = 2,
- KeyRelease = 3,
- ButtonPress = 4,
- ButtonRelease = 5,
- MotionNotify = 6,
- EnterNotify = 7,
- LeaveNotify = 8,
- FocusIn = 9,
- FocusOut = 10,
- KeymapNotify = 11,
- Expose = 12,
- GraphicsExpose = 13,
- NoExpose = 14,
- VisibilityNotify = 15,
- CreateNotify = 16,
- DestroyNotify = 17,
- UnmapNotify = 18,
- MapNotify = 19,
- MapRequest = 20,
- ReparentNotify = 21,
- ConfigureNotify = 22,
- ConfigureRequest = 23,
- GravityNotify = 24,
- ResizeRequest = 25,
- CirculateNotify = 26,
- CirculateRequest = 27,
- PropertyNotify = 28,
- SelectionClear = 29,
- SelectionRequest = 30,
- SelectionNotify = 31,
- ColormapNotify = 32,
- ClientMessage = 33,
- MappingNotify = 34,
-
- LASTEvent
- }
-
- [Flags]
- public enum SetWindowValuemask {
- Nothing = 0,
- BackPixmap = 1,
- BackPixel = 2,
- BorderPixmap = 4,
- BorderPixel = 8,
- BitGravity = 16,
- WinGravity = 32,
- BackingStore = 64,
- BackingPlanes = 128,
- BackingPixel = 256,
- OverrideRedirect = 512,
- SaveUnder = 1024,
- EventMask = 2048,
- DontPropagate = 4096,
- ColorMap = 8192,
- Cursor = 16384
- }
-
- public enum SendEventValues {
- PointerWindow = 0,
- InputFocus = 1
- }
-
- public enum CreateWindowArgs {
- CopyFromParent = 0,
- ParentRelative = 1,
- InputOutput = 1,
- InputOnly = 2
- }
-
- public enum Gravity {
- ForgetGravity = 0,
- NorthWestGravity= 1,
- NorthGravity = 2,
- NorthEastGravity= 3,
- WestGravity = 4,
- CenterGravity = 5,
- EastGravity = 6,
- SouthWestGravity= 7,
- SouthGravity = 8,
- SouthEastGravity= 9,
- StaticGravity = 10
- }
-
- public enum XKeySym : uint {
- XK_BackSpace = 0xFF08,
- XK_Tab = 0xFF09,
- XK_Clear = 0xFF0B,
- XK_Return = 0xFF0D,
- XK_Home = 0xFF50,
- XK_Left = 0xFF51,
- XK_Up = 0xFF52,
- XK_Right = 0xFF53,
- XK_Down = 0xFF54,
- XK_Page_Up = 0xFF55,
- XK_Page_Down = 0xFF56,
- XK_End = 0xFF57,
- XK_Begin = 0xFF58,
- XK_Menu = 0xFF67,
- XK_Shift_L = 0xFFE1,
- XK_Shift_R = 0xFFE2,
- XK_Control_L = 0xFFE3,
- XK_Control_R = 0xFFE4,
- XK_Caps_Lock = 0xFFE5,
- XK_Shift_Lock = 0xFFE6,
- XK_Meta_L = 0xFFE7,
- XK_Meta_R = 0xFFE8,
- XK_Alt_L = 0xFFE9,
- XK_Alt_R = 0xFFEA,
- XK_Super_L = 0xFFEB,
- XK_Super_R = 0xFFEC,
- XK_Hyper_L = 0xFFED,
- XK_Hyper_R = 0xFFEE,
- }
-
- [Flags]
- public enum EventMask {
- NoEventMask = 0,
- KeyPressMask = 1<<0,
- KeyReleaseMask = 1<<1,
- ButtonPressMask = 1<<2,
- ButtonReleaseMask = 1<<3,
- EnterWindowMask = 1<<4,
- LeaveWindowMask = 1<<5,
- PointerMotionMask = 1<<6,
- PointerMotionHintMask = 1<<7,
- Button1MotionMask = 1<<8,
- Button2MotionMask = 1<<9,
- Button3MotionMask = 1<<10,
- Button4MotionMask = 1<<11,
- Button5MotionMask = 1<<12,
- ButtonMotionMask = 1<<13,
- KeymapStateMask = 1<<14,
- ExposureMask = 1<<15,
- VisibilityChangeMask = 1<<16,
- StructureNotifyMask = 1<<17,
- ResizeRedirectMask = 1<<18,
- SubstructureNotifyMask = 1<<19,
- SubstructureRedirectMask= 1<<20,
- FocusChangeMask = 1<<21,
- PropertyChangeMask = 1<<22,
- ColormapChangeMask = 1<<23,
- OwnerGrabButtonMask = 1<<24
- }
-
- public enum GrabMode {
- GrabModeSync = 0,
- GrabModeAsync = 1
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XStandardColormap {
- public IntPtr colormap;
- public IntPtr red_max;
- public IntPtr red_mult;
- public IntPtr green_max;
- public IntPtr green_mult;
- public IntPtr blue_max;
- public IntPtr blue_mult;
- public IntPtr base_pixel;
- public IntPtr visualid;
- public IntPtr killid;
- }
-
- [StructLayout(LayoutKind.Sequential, Pack=2)]
- public struct XColor {
- public IntPtr pixel;
- public ushort red;
- public ushort green;
- public ushort blue;
- public byte flags;
- public byte pad;
- }
-
- public enum Atom {
- AnyPropertyType = 0,
- XA_PRIMARY = 1,
- XA_SECONDARY = 2,
- XA_ARC = 3,
- XA_ATOM = 4,
- XA_BITMAP = 5,
- XA_CARDINAL = 6,
- XA_COLORMAP = 7,
- XA_CURSOR = 8,
- XA_CUT_BUFFER0 = 9,
- XA_CUT_BUFFER1 = 10,
- XA_CUT_BUFFER2 = 11,
- XA_CUT_BUFFER3 = 12,
- XA_CUT_BUFFER4 = 13,
- XA_CUT_BUFFER5 = 14,
- XA_CUT_BUFFER6 = 15,
- XA_CUT_BUFFER7 = 16,
- XA_DRAWABLE = 17,
- XA_FONT = 18,
- XA_INTEGER = 19,
- XA_PIXMAP = 20,
- XA_POINT = 21,
- XA_RECTANGLE = 22,
- XA_RESOURCE_MANAGER = 23,
- XA_RGB_COLOR_MAP = 24,
- XA_RGB_BEST_MAP = 25,
- XA_RGB_BLUE_MAP = 26,
- XA_RGB_DEFAULT_MAP = 27,
- XA_RGB_GRAY_MAP = 28,
- XA_RGB_GREEN_MAP = 29,
- XA_RGB_RED_MAP = 30,
- XA_STRING = 31,
- XA_VISUALID = 32,
- XA_WINDOW = 33,
- XA_WM_COMMAND = 34,
- XA_WM_HINTS = 35,
- XA_WM_CLIENT_MACHINE = 36,
- XA_WM_ICON_NAME = 37,
- XA_WM_ICON_SIZE = 38,
- XA_WM_NAME = 39,
- XA_WM_NORMAL_HINTS = 40,
- XA_WM_SIZE_HINTS = 41,
- XA_WM_ZOOM_HINTS = 42,
- XA_MIN_SPACE = 43,
- XA_NORM_SPACE = 44,
- XA_MAX_SPACE = 45,
- XA_END_SPACE = 46,
- XA_SUPERSCRIPT_X = 47,
- XA_SUPERSCRIPT_Y = 48,
- XA_SUBSCRIPT_X = 49,
- XA_SUBSCRIPT_Y = 50,
- XA_UNDERLINE_POSITION = 51,
- XA_UNDERLINE_THICKNESS = 52,
- XA_STRIKEOUT_ASCENT = 53,
- XA_STRIKEOUT_DESCENT = 54,
- XA_ITALIC_ANGLE = 55,
- XA_X_HEIGHT = 56,
- XA_QUAD_WIDTH = 57,
- XA_WEIGHT = 58,
- XA_POINT_SIZE = 59,
- XA_RESOLUTION = 60,
- XA_COPYRIGHT = 61,
- XA_NOTICE = 62,
- XA_FONT_NAME = 63,
- XA_FAMILY_NAME = 64,
- XA_FULL_NAME = 65,
- XA_CAP_HEIGHT = 66,
- XA_WM_CLASS = 67,
- XA_WM_TRANSIENT_FOR = 68,
-
- XA_LAST_PREDEFINED = 68
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XScreen {
- public IntPtr ext_data;
- public IntPtr display;
- public IntPtr root;
- public int width;
- public int height;
- public int mwidth;
- public int mheight;
- public int ndepths;
- public IntPtr depths;
- public int root_depth;
- public IntPtr root_visual;
- public IntPtr default_gc;
- public IntPtr cmap;
- public IntPtr white_pixel;
- public IntPtr black_pixel;
- public int max_maps;
- public int min_maps;
- public int backing_store;
- public bool save_unders;
- public IntPtr root_input_mask;
- }
-
- [Flags]
- public enum ChangeWindowFlags {
- CWX = 1<<0,
- CWY = 1<<1,
- CWWidth = 1<<2,
- CWHeight = 1<<3,
- CWBorderWidth = 1<<4,
- CWSibling = 1<<5,
- CWStackMode = 1<<6
- }
-
- public enum StackMode {
- Above = 0,
- Below = 1,
- TopIf = 2,
- BottomIf = 3,
- Opposite = 4
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XWindowChanges {
- public int x;
- public int y;
- public int width;
- public int height;
- public int border_width;
- public IntPtr sibling;
- public StackMode stack_mode;
- }
-
- [Flags]
- public enum ColorFlags {
- DoRed = 1<<0,
- DoGreen = 1<<1,
- DoBlue = 1<<2
- }
-
- public enum NotifyMode {
- NotifyNormal = 0,
- NotifyGrab = 1,
- NotifyUngrab = 2
- }
-
- public enum NotifyDetail {
- NotifyAncestor = 0,
- NotifyVirtual = 1,
- NotifyInferior = 2,
- NotifyNonlinear = 3,
- NotifyNonlinearVirtual = 4,
- NotifyPointer = 5,
- NotifyPointerRoot = 6,
- NotifyDetailNone = 7
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct MotifWmHints {
- public IntPtr flags;
- public IntPtr functions;
- public IntPtr decorations;
- public IntPtr input_mode;
- public IntPtr status;
-
- public override string ToString ()
- {
- return string.Format("MotifWmHints <flags={0}, functions={1}, decorations={2}, input_mode={3}, status={4}", (MotifFlags) flags.ToInt32 (), (MotifFunctions) functions.ToInt32 (), (MotifDecorations) decorations.ToInt32 (), (MotifInputMode) input_mode.ToInt32 (), status.ToInt32 ());
- }
- }
-
- [Flags]
- public enum MotifFlags {
- Functions = 1,
- Decorations = 2,
- InputMode = 4,
- Status = 8
- }
-
- [Flags]
- public enum MotifFunctions {
- All = 0x01,
- Resize = 0x02,
- Move = 0x04,
- Minimize = 0x08,
- Maximize = 0x10,
- Close = 0x20
- }
-
- [Flags]
- public enum MotifDecorations {
- All = 0x01,
- Border = 0x02,
- ResizeH = 0x04,
- Title = 0x08,
- Menu = 0x10,
- Minimize = 0x20,
- Maximize = 0x40,
-
- }
-
- [Flags]
- public enum MotifInputMode {
- Modeless = 0,
- ApplicationModal = 1,
- SystemModal = 2,
- FullApplicationModal = 3
- }
-
- [Flags]
- public enum KeyMasks {
- ShiftMask = (1 << 0),
- LockMask = (1 << 1),
- ControlMask = (1 << 2),
- Mod1Mask = (1 << 3),
- Mod2Mask = (1 << 4),
- Mod3Mask = (1 << 5),
- Mod4Mask = (1 << 6),
- Mod5Mask = (1 << 7),
-
- ModMasks = Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask
- }
-
- [Flags]
- public enum MouseKeyMasks {
- Button1Mask = (1 << 8),
- Button2Mask = (1 << 9),
- Button3Mask = (1 << 10),
- Button4Mask = (1 << 11),
- Button5Mask = (1 << 12),
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XModifierKeymap {
- public int max_keypermod;
- public IntPtr modifiermap;
- }
-
- public enum PropertyMode {
- Replace = 0,
- Prepend = 1,
- Append = 2
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XKeyBoardState {
- public int key_click_percent;
- public int bell_percent;
- public uint bell_pitch, bell_duration;
- public IntPtr led_mask;
- public int global_auto_repeat;
- public AutoRepeats auto_repeats;
-
- [StructLayout (LayoutKind.Explicit)]
- public struct AutoRepeats {
- [FieldOffset (0)]
- public byte first;
-
- [FieldOffset (31)]
- public byte last;
- }
- }
-
- [Flags]
- public enum GCFunction {
- GCFunction = 1<<0,
- GCPlaneMask = 1<<1,
- GCForeground = 1<<2,
- GCBackground = 1<<3,
- GCLineWidth = 1<<4,
- GCLineStyle = 1<<5,
- GCCapStyle = 1<<6,
- GCJoinStyle = 1<<7,
- GCFillStyle = 1<<8,
- GCFillRule = 1<<9,
- GCTile = 1<<10,
- GCStipple = 1<<11,
- GCTileStipXOrigin = 1<<12,
- GCTileStipYOrigin = 1<<13,
- GCFont = 1<<14,
- GCSubwindowMode = 1<<15,
- GCGraphicsExposures = 1<<16,
- GCClipXOrigin = 1<<17,
- GCClipYOrigin = 1<<18,
- GCClipMask = 1<<19,
- GCDashOffset = 1<<20,
- GCDashList = 1<<21,
- GCArcMode = 1<<22
- }
-
- public enum GCJoinStyle {
- JoinMiter = 0,
- JoinRound = 1,
- JoinBevel = 2
- }
-
- public enum GCLineStyle {
- LineSolid = 0,
- LineOnOffDash = 1,
- LineDoubleDash = 2
- }
-
- public enum GCCapStyle {
- CapNotLast = 0,
- CapButt = 1,
- CapRound = 2,
- CapProjecting = 3
- }
-
- public enum GCFillStyle {
- FillSolid = 0,
- FillTiled = 1,
- FillStippled = 2,
- FillOpaqueStppled = 3
- }
-
- public enum GCFillRule {
- EvenOddRule = 0,
- WindingRule = 1
- }
-
- public enum GCArcMode {
- ArcChord = 0,
- ArcPieSlice = 1
- }
-
- public enum GCSubwindowMode {
- ClipByChildren = 0,
- IncludeInferiors = 1
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XGCValues {
- public GXFunction function;
- public IntPtr plane_mask;
- public IntPtr foreground;
- public IntPtr background;
- public int line_width;
- public GCLineStyle line_style;
- public GCCapStyle cap_style;
- public GCJoinStyle join_style;
- public GCFillStyle fill_style;
- public GCFillRule fill_rule;
- public GCArcMode arc_mode;
- public IntPtr tile;
- public IntPtr stipple;
- public int ts_x_origin;
- public int ts_y_origin;
- public IntPtr font;
- public GCSubwindowMode subwindow_mode;
- public bool graphics_exposures;
- public int clip_x_origin;
- public int clib_y_origin;
- public IntPtr clip_mask;
- public int dash_offset;
- public byte dashes;
- }
-
- public enum GXFunction {
- GXclear = 0x0, /* 0 */
- GXand = 0x1, /* src AND dst */
- GXandReverse = 0x2, /* src AND NOT dst */
- GXcopy = 0x3, /* src */
- GXandInverted = 0x4, /* NOT src AND dst */
- GXnoop = 0x5, /* dst */
- GXxor = 0x6, /* src XOR dst */
- GXor = 0x7, /* src OR dst */
- GXnor = 0x8, /* NOT src AND NOT dst */
- GXequiv = 0x9, /* NOT src XOR dst */
- GXinvert = 0xa, /* NOT dst */
- GXorReverse = 0xb, /* src OR NOT dst */
- GXcopyInverted = 0xc, /* NOT src */
- GXorInverted = 0xd, /* NOT src OR dst */
- GXnand = 0xe, /* NOT src OR NOT dst */
- GXset = 0xf /* 1 */
- }
-
- public enum NetWindowManagerState {
- Remove = 0,
- Add = 1,
- Toggle = 2
- }
-
- public enum RevertTo {
- None = 0,
- PointerRoot = 1,
- Parent = 2
- }
-
- public enum MapState {
- IsUnmapped = 0,
- IsUnviewable = 1,
- IsViewable = 2
- }
-
- public enum CursorFontShape {
- XC_X_cursor = 0,
- XC_arrow = 2,
- XC_based_arrow_down = 4,
- XC_based_arrow_up = 6,
- XC_boat = 8,
- XC_bogosity = 10,
- XC_bottom_left_corner = 12,
- XC_bottom_right_corner = 14,
- XC_bottom_side = 16,
- XC_bottom_tee = 18,
- XC_box_spiral = 20,
- XC_center_ptr = 22,
-
- XC_circle = 24,
- XC_clock = 26,
- XC_coffee_mug = 28,
- XC_cross = 30,
- XC_cross_reverse = 32,
- XC_crosshair = 34,
- XC_diamond_cross = 36,
- XC_dot = 38,
- XC_dotbox = 40,
- XC_double_arrow = 42,
- XC_draft_large = 44,
- XC_draft_small = 46,
-
- XC_draped_box = 48,
- XC_exchange = 50,
- XC_fleur = 52,
- XC_gobbler = 54,
- XC_gumby = 56,
- XC_hand1 = 58,
- XC_hand2 = 60,
- XC_heart = 62,
- XC_icon = 64,
- XC_iron_cross = 66,
- XC_left_ptr = 68,
- XC_left_side = 70,
-
- XC_left_tee = 72,
- XC_left_button = 74,
- XC_ll_angle = 76,
- XC_lr_angle = 78,
- XC_man = 80,
- XC_middlebutton = 82,
- XC_mouse = 84,
- XC_pencil = 86,
- XC_pirate = 88,
- XC_plus = 90,
- XC_question_arrow = 92,
- XC_right_ptr = 94,
-
- XC_right_side = 96,
- XC_right_tee = 98,
- XC_rightbutton = 100,
- XC_rtl_logo = 102,
- XC_sailboat = 104,
- XC_sb_down_arrow = 106,
- XC_sb_h_double_arrow = 108,
- XC_sb_left_arrow = 110,
- XC_sb_right_arrow = 112,
- XC_sb_up_arrow = 114,
- XC_sb_v_double_arrow = 116,
- XC_sb_shuttle = 118,
-
- XC_sizing = 120,
- XC_spider = 122,
- XC_spraycan = 124,
- XC_star = 126,
- XC_target = 128,
- XC_tcross = 130,
- XC_top_left_arrow = 132,
- XC_top_left_corner = 134,
- XC_top_right_corner = 136,
- XC_top_side = 138,
- XC_top_tee = 140,
- XC_trek = 142,
-
- XC_ul_angle = 144,
- XC_umbrella = 146,
- XC_ur_angle = 148,
- XC_watch = 150,
- XC_xterm = 152,
- XC_num_glyphs = 154
- }
-
- public enum SystrayRequest {
- SYSTEM_TRAY_REQUEST_DOCK = 0,
- SYSTEM_TRAY_BEGIN_MESSAGE = 1,
- SYSTEM_TRAY_CANCEL_MESSAGE = 2
- }
-
- public enum NetWmStateRequest {
- _NET_WM_STATE_REMOVE = 0,
- _NET_WM_STATE_ADD = 1,
- _NET_WM_STATE_TOGGLE = 2
- }
-
- public enum NetWmMoveResize {
- _NET_WM_MOVERESIZE_SIZE_TOPLEFT = 0,
- _NET_WM_MOVERESIZE_SIZE_TOP = 1,
- _NET_WM_MOVERESIZE_SIZE_TOPRIGHT = 2,
- _NET_WM_MOVERESIZE_SIZE_RIGHT = 3,
- _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT = 4,
- _NET_WM_MOVERESIZE_SIZE_BOTTOM = 5,
- _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT = 6,
- _NET_WM_MOVERESIZE_SIZE_LEFT = 7,
- _NET_WM_MOVERESIZE_MOVE = 8,
- _NET_WM_MOVERESIZE_SIZE_KEYBOARD = 9,
- _NET_WM_MOVERESIZE_MOVE_KEYBOARD = 10,
- _NET_WM_MOVERESIZE_CANCEL = 11
- }
-
- [Flags]
- public enum XSizeHintsFlags {
- USPosition = (1 << 0),
- USSize = (1 << 1),
- PPosition = (1 << 2),
- PSize = (1 << 3),
- PMinSize = (1 << 4),
- PMaxSize = (1 << 5),
- PResizeInc = (1 << 6),
- PAspect = (1 << 7),
- PAllHints = (PPosition | PSize | PMinSize | PMaxSize | PResizeInc | PAspect),
- PBaseSize = (1 << 8),
- PWinGravity = (1 << 9),
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XSizeHints {
- public IntPtr flags;
- public int x;
- public int y;
- public int width;
- public int height;
- public int min_width;
- public int min_height;
- public int max_width;
- public int max_height;
- public int width_inc;
- public int height_inc;
- public int min_aspect_x;
- public int min_aspect_y;
- public int max_aspect_x;
- public int max_aspect_y;
- public int base_width;
- public int base_height;
- public int win_gravity;
- }
-
- [Flags]
- public enum XWMHintsFlags {
- InputHint = (1 << 0),
- StateHint = (1 << 1),
- IconPixmapHint = (1 << 2),
- IconWindowHint = (1 << 3),
- IconPositionHint = (1 << 4),
- IconMaskHint = (1 << 5),
- WindowGroupHint = (1 << 6),
- AllHints = (InputHint | StateHint | IconPixmapHint | IconWindowHint | IconPositionHint | IconMaskHint | WindowGroupHint)
- }
-
- public enum XInitialState {
- DontCareState = 0,
- NormalState = 1,
- ZoomState = 2,
- IconicState = 3,
- InactiveState = 4
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XWMHints {
- public IntPtr flags;
- public bool input;
- public XInitialState initial_state;
- public IntPtr icon_pixmap;
- public IntPtr icon_window;
- public int icon_x;
- public int icon_y;
- public IntPtr icon_mask;
- public IntPtr window_group;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- public struct XIconSize {
- public int min_width;
- public int min_height;
- public int max_width;
- public int max_height;
- public int width_inc;
- public int height_inc;
- }
-
- public struct CaretStruct {
- public Timer Timer; // Blink interval
- public IntPtr Hwnd; // Window owning the caret
- public IntPtr Window; // Actual X11 handle of the window
- public int X; // X position of the caret
- public int Y; // Y position of the caret
- public int Width; // Width of the caret; if no image used
- public int Height; // Height of the caret, if no image used
- public bool Visible; // Is caret visible?
- public bool On; // Caret blink display state: On/Off
- public IntPtr gc; // Graphics context
- public bool Paused; // Don't update right now
- }
-
- public struct HoverStruct {
- public Timer Timer; // for hovering
- public IntPtr Window; // Last window we entered; used to generate WM_MOUSEHOVER (handle is X11 handle)
- public int X; // Last MouseMove X coordinate; used to generate WM_MOUSEHOVER
- public int Y; // Last MouseMove Y coordinate; used to generate WM_MOUSEHOVER
- public Size Size; // Size of the rectangle the mouse has to stay in to generate hover
- public int Interval; // in milliseconds, how long to hold before hover is generated
- public IntPtr Atom; // X Atom
- }
-
- /*public struct ClickStruct {
- public IntPtr Hwnd; //
- public Msg Message; //
- public IntPtr wParam; //
- public IntPtr lParam; //
- public long Time; // Last time we received a mouse click
- public bool Pending; // True if we haven't sent the last mouse click
- }*/
-
- public struct GrabStruct {
- public bool Confined; // Is the current grab (if any) confined to grab_area?
- public IntPtr Hwnd; // The window that is grabbed
- public Rectangle Area; // The area the current grab is confined to
- }
-
- public delegate int XErrorHandler(IntPtr DisplayHandle, ref XErrorEvent error_event);
-
- public enum XRequest : byte {
- X_CreateWindow = 1,
- X_ChangeWindowAttributes = 2,
- X_GetWindowAttributes = 3,
- X_DestroyWindow = 4,
- X_DestroySubwindows = 5,
- X_ChangeSaveSet = 6,
- X_ReparentWindow = 7,
- X_MapWindow = 8,
- X_MapSubwindows = 9,
- X_UnmapWindow = 10,
- X_UnmapSubwindows = 11,
- X_ConfigureWindow = 12,
- X_CirculateWindow = 13,
- X_GetGeometry = 14,
- X_QueryTree = 15,
- X_InternAtom = 16,
- X_GetAtomName = 17,
- X_ChangeProperty = 18,
- X_DeleteProperty = 19,
- X_GetProperty = 20,
- X_ListProperties = 21,
- X_SetSelectionOwner = 22,
- X_GetSelectionOwner = 23,
- X_ConvertSelection = 24,
- X_SendEvent = 25,
- X_GrabPointer = 26,
- X_UngrabPointer = 27,
- X_GrabButton = 28,
- X_UngrabButton = 29,
- X_ChangeActivePointerGrab = 30,
- X_GrabKeyboard = 31,
- X_UngrabKeyboard = 32,
- X_GrabKey = 33,
- X_UngrabKey = 34,
- X_AllowEvents = 35,
- X_GrabServer = 36,
- X_UngrabServer = 37,
- X_QueryPointer = 38,
- X_GetMotionEvents = 39,
- X_TranslateCoords = 40,
- X_WarpPointer = 41,
- X_SetInputFocus = 42,
- X_GetInputFocus = 43,
- X_QueryKeymap = 44,
- X_OpenFont = 45,
- X_CloseFont = 46,
- X_QueryFont = 47,
- X_QueryTextExtents = 48,
- X_ListFonts = 49,
- X_ListFontsWithInfo = 50,
- X_SetFontPath = 51,
- X_GetFontPath = 52,
- X_CreatePixmap = 53,
- X_FreePixmap = 54,
- X_CreateGC = 55,
- X_ChangeGC = 56,
- X_CopyGC = 57,
- X_SetDashes = 58,
- X_SetClipRectangles = 59,
- X_FreeGC = 60,
- X_ClearArea = 61,
- X_CopyArea = 62,
- X_CopyPlane = 63,
- X_PolyPoint = 64,
- X_PolyLine = 65,
- X_PolySegment = 66,
- X_PolyRectangle = 67,
- X_PolyArc = 68,
- X_FillPoly = 69,
- X_PolyFillRectangle = 70,
- X_PolyFillArc = 71,
- X_PutImage = 72,
- X_GetImage = 73,
- X_PolyText8 = 74,
- X_PolyText16 = 75,
- X_ImageText8 = 76,
- X_ImageText16 = 77,
- X_CreateColormap = 78,
- X_FreeColormap = 79,
- X_CopyColormapAndFree = 80,
- X_InstallColormap = 81,
- X_UninstallColormap = 82,
- X_ListInstalledColormaps = 83,
- X_AllocColor = 84,
- X_AllocNamedColor = 85,
- X_AllocColorCells = 86,
- X_AllocColorPlanes = 87,
- X_FreeColors = 88,
- X_StoreColors = 89,
- X_StoreNamedColor = 90,
- X_QueryColors = 91,
- X_LookupColor = 92,
- X_CreateCursor = 93,
- X_CreateGlyphCursor = 94,
- X_FreeCursor = 95,
- X_RecolorCursor = 96,
- X_QueryBestSize = 97,
- X_QueryExtension = 98,
- X_ListExtensions = 99,
- X_ChangeKeyboardMapping = 100,
- X_GetKeyboardMapping = 101,
- X_ChangeKeyboardControl = 102,
- X_GetKeyboardControl = 103,
- X_Bell = 104,
- X_ChangePointerControl = 105,
- X_GetPointerControl = 106,
- X_SetScreenSaver = 107,
- X_GetScreenSaver = 108,
- X_ChangeHosts = 109,
- X_ListHosts = 110,
- X_SetAccessControl = 111,
- X_SetCloseDownMode = 112,
- X_KillClient = 113,
- X_RotateProperties = 114,
- X_ForceScreenSaver = 115,
- X_SetPointerMapping = 116,
- X_GetPointerMapping = 117,
- X_SetModifierMapping = 118,
- X_GetModifierMapping = 119,
- X_NoOperation = 127
- }
-
- [Flags]
- public enum XIMProperties {
- XIMPreeditArea = 0x0001,
- XIMPreeditCallbacks = 0x0002,
- XIMPreeditPosition = 0x0004,
- XIMPreeditNothing = 0x0008,
- XIMPreeditNone = 0x0010,
- XIMStatusArea = 0x0100,
- XIMStatusCallbacks = 0x0200,
- XIMStatusNothing = 0x0400,
- XIMStatusNone = 0x0800,
- }
-
- [Flags]
- public enum WindowType {
- Client = 1,
- Whole = 2,
- Both = 3
- }
-
- public enum XEmbedMessage {
- EmbeddedNotify = 0,
- WindowActivate = 1,
- WindowDeactivate = 2,
- RequestFocus = 3,
- FocusIn = 4,
- FocusOut = 5,
- FocusNext = 6,
- FocusPrev = 7,
- /* 8-9 were used for XEMBED_GRAB_KEY/XEMBED_UNGRAB_KEY */
- ModalityOn = 10,
- ModalityOff = 11,
- RegisterAccelerator = 12,
- UnregisterAccelerator = 13,
- ActivateAccelerator = 14
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XcursorImage
- {
- private int version;
- public int size; /* nominal size for matching */
- public int width; /* actual width */
- public int height; /* actual height */
- public int xhot; /* hot spot x (must be inside image) */
- public int yhot; /* hot spot y (must be inside image) */
- public int delay; /* hot spot y (must be inside image) */
- public IntPtr pixels; /* pointer to pixels */
-
- public override string ToString ()
- {
- return string.Format ("XCursorImage (version: {0}, size: {1}, width: {2}, height: {3}, xhot: {4}, yhot: {5}, delay: {6}, pixels: {7}",
- version, size, width, height, xhot, yhot, delay, pixels);
- }
- } ;
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XcursorImages
- {
- public int nimage; /* number of images */
- public IntPtr images; /* array of XcursorImage pointers */
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XIMStyles
- {
- public ushort count_styles;
- public IntPtr supported_styles;
- }
-
- [StructLayout (LayoutKind.Sequential)]
-
- public class XPoint
- {
- public short X;
- public short Y;
- }
-
- [StructLayout (LayoutKind.Sequential)]
-
- public class XIMCallback
- {
- public IntPtr client_data;
- public XIMProc callback;
- GCHandle gch;
-
- public XIMCallback (IntPtr clientData, XIMProc proc)
- {
- this.client_data = clientData;
- this.gch = GCHandle.Alloc (proc);
- this.callback = proc;
- }
-
- ~XIMCallback ()
- {
- gch.Free ();
- }
- }
-
- public enum XIMFeedback
- {
- Reverse = 1,
- Underline = 2,
- Highlight = 4,
- Primary = 32,
- Secondary = 64,
- Tertiary = 128,
- }
-
- public struct XIMFeedbackStruct
- {
- public byte FeedbackMask; // one or more of XIMFeedback enum
- }
-
- public struct XIMText
- {
- public ushort Length;
- public IntPtr Feedback; // to XIMFeedbackStruct
- public bool EncodingIsWChar;
- public IntPtr String; // it could be either char* or wchar_t*
- }
-
- public struct XIMPreeditDrawCallbackStruct
- {
- public int Caret;
- public int ChangeFirst;
- public int ChangeLength;
- public IntPtr Text; // to XIMText
- }
-
- public enum XIMCaretDirection
- {
- XIMForwardChar,
- XIMBackwardChar,
- XIMForwardWord,
- XIMBackwardWord,
- XIMCaretUp,
- XIMCaretDown,
- XIMNextLine,
- XIMPreviousLine,
- XIMLineStart,
- XIMLineEnd,
- XIMAbsolutePosition,
- XIMDontChange
- }
-
- public enum XIMCaretStyle
- {
- IsInvisible,
- IsPrimary,
- IsSecondary
- }
-
- public struct XIMPreeditCaretCallbackStruct
- {
- public int Position;
- public XIMCaretDirection Direction;
- public XIMCaretStyle Style;
- }
-
- // only PreeditStartCallback requires return value though.
- public delegate int XIMProc (IntPtr xim, IntPtr clientData, IntPtr callData);
-
- public static class XNames
- {
- public const string XNVaNestedList = "XNVaNestedList";
- public const string XNQueryInputStyle = "queryInputStyle";
- public const string XNClientWindow = "clientWindow";
- public const string XNInputStyle = "inputStyle";
- public const string XNFocusWindow = "focusWindow";
-
- // XIMPreeditCallbacks delegate names.
- public const string XNPreeditStartCallback = "preeditStartCallback";
- public const string XNPreeditDoneCallback = "preeditDoneCallback";
- public const string XNPreeditDrawCallback = "preeditDrawCallback";
- public const string XNPreeditCaretCallback = "preeditCaretCallback";
- public const string XNPreeditStateNotifyCallback = "preeditStateNotifyCallback";
- public const string XNPreeditAttributes = "preeditAttributes";
- // XIMStatusCallbacks delegate names.
- public const string XNStatusStartCallback = "statusStartCallback";
- public const string XNStatusDoneCallback = "statusDoneCallback";
- public const string XNStatusDrawCallback = "statusDrawCallback";
- public const string XNStatusAttributes = "statusAttributes";
-
- public const string XNArea = "area";
- public const string XNAreaNeeded = "areaNeeded";
- public const string XNSpotLocation = "spotLocation";
- public const string XNFontSet = "fontSet";
- }
-
- [StructLayout (LayoutKind.Sequential)]
- public struct XineramaScreenInfo
- {
- public int screen_number;
- public short x_org;
- public short y_org;
- public short width;
- public short height;
- }
-}
+++ /dev/null
-/* autogenerated */
-using System;
-
-namespace XLib
-{
- [Flags]
- public enum KeySym
- {
- XK_VoidSymbol = 0xffffff,
- XK_BackSpace = 0xff08,
- XK_Tab = 0xff09,
- XK_Linefeed = 0xff0a,
- XK_Clear = 0xff0b,
- XK_Return = 0xff0d,
- XK_Pause = 0xff13,
- XK_Scroll_Lock = 0xff14,
- XK_Sys_Req = 0xff15,
- XK_Escape = 0xff1b,
- XK_Delete = 0xffff,
- XK_Multi_key = 0xff20,
- XK_Codeinput = 0xff37,
- XK_SingleCandidate = 0xff3c,
- XK_MultipleCandidate = 0xff3d,
- XK_PreviousCandidate = 0xff3e,
- XK_Kanji = 0xff21,
- XK_Muhenkan = 0xff22,
- XK_Henkan_Mode = 0xff23,
- XK_Henkan = 0xff23,
- XK_Romaji = 0xff24,
- XK_Hiragana = 0xff25,
- XK_Katakana = 0xff26,
- XK_Hiragana_Katakana = 0xff27,
- XK_Zenkaku = 0xff28,
- XK_Hankaku = 0xff29,
- XK_Zenkaku_Hankaku = 0xff2a,
- XK_Touroku = 0xff2b,
- XK_Massyo = 0xff2c,
- XK_Kana_Lock = 0xff2d,
- XK_Kana_Shift = 0xff2e,
- XK_Eisu_Shift = 0xff2f,
- XK_Eisu_toggle = 0xff30,
- XK_Kanji_Bangou = 0xff37,
- XK_Zen_Koho = 0xff3d,
- XK_Mae_Koho = 0xff3e,
- XK_Home = 0xff50,
- XK_Left = 0xff51,
- XK_Up = 0xff52,
- XK_Right = 0xff53,
- XK_Down = 0xff54,
- XK_Prior = 0xff55,
- XK_Page_Up = 0xff55,
- XK_Next = 0xff56,
- XK_Page_Down = 0xff56,
- XK_End = 0xff57,
- XK_Begin = 0xff58,
- XK_Select = 0xff60,
- XK_Print = 0xff61,
- XK_Execute = 0xff62,
- XK_Insert = 0xff63,
- XK_Undo = 0xff65,
- XK_Redo = 0xff66,
- XK_Menu = 0xff67,
- XK_Find = 0xff68,
- XK_Cancel = 0xff69,
- XK_Help = 0xff6a,
- XK_Break = 0xff6b,
- XK_Mode_switch = 0xff7e,
- XK_script_switch = 0xff7e,
- XK_Num_Lock = 0xff7f,
- XK_KP_Space = 0xff80,
- XK_KP_Tab = 0xff89,
- XK_KP_Enter = 0xff8d,
- XK_KP_F1 = 0xff91,
- XK_KP_F2 = 0xff92,
- XK_KP_F3 = 0xff93,
- XK_KP_F4 = 0xff94,
- XK_KP_Home = 0xff95,
- XK_KP_Left = 0xff96,
- XK_KP_Up = 0xff97,
- XK_KP_Right = 0xff98,
- XK_KP_Down = 0xff99,
- XK_KP_Prior = 0xff9a,
- XK_KP_Page_Up = 0xff9a,
- XK_KP_Next = 0xff9b,
- XK_KP_Page_Down = 0xff9b,
- XK_KP_End = 0xff9c,
- XK_KP_Begin = 0xff9d,
- XK_KP_Insert = 0xff9e,
- XK_KP_Delete = 0xff9f,
- XK_KP_Equal = 0xffbd,
- XK_KP_Multiply = 0xffaa,
- XK_KP_Add = 0xffab,
- XK_KP_Separator = 0xffac,
- XK_KP_Subtract = 0xffad,
- XK_KP_Decimal = 0xffae,
- XK_KP_Divide = 0xffaf,
- XK_KP_0 = 0xffb0,
- XK_KP_1 = 0xffb1,
- XK_KP_2 = 0xffb2,
- XK_KP_3 = 0xffb3,
- XK_KP_4 = 0xffb4,
- XK_KP_5 = 0xffb5,
- XK_KP_6 = 0xffb6,
- XK_KP_7 = 0xffb7,
- XK_KP_8 = 0xffb8,
- XK_KP_9 = 0xffb9,
- XK_F1 = 0xffbe,
- XK_F2 = 0xffbf,
- XK_F3 = 0xffc0,
- XK_F4 = 0xffc1,
- XK_F5 = 0xffc2,
- XK_F6 = 0xffc3,
- XK_F7 = 0xffc4,
- XK_F8 = 0xffc5,
- XK_F9 = 0xffc6,
- XK_F10 = 0xffc7,
- XK_F11 = 0xffc8,
- XK_L1 = 0xffc8,
- XK_F12 = 0xffc9,
- XK_L2 = 0xffc9,
- XK_F13 = 0xffca,
- XK_L3 = 0xffca,
- XK_F14 = 0xffcb,
- XK_L4 = 0xffcb,
- XK_F15 = 0xffcc,
- XK_L5 = 0xffcc,
- XK_F16 = 0xffcd,
- XK_L6 = 0xffcd,
- XK_F17 = 0xffce,
- XK_L7 = 0xffce,
- XK_F18 = 0xffcf,
- XK_L8 = 0xffcf,
- XK_F19 = 0xffd0,
- XK_L9 = 0xffd0,
- XK_F20 = 0xffd1,
- XK_L10 = 0xffd1,
- XK_F21 = 0xffd2,
- XK_R1 = 0xffd2,
- XK_F22 = 0xffd3,
- XK_R2 = 0xffd3,
- XK_F23 = 0xffd4,
- XK_R3 = 0xffd4,
- XK_F24 = 0xffd5,
- XK_R4 = 0xffd5,
- XK_F25 = 0xffd6,
- XK_R5 = 0xffd6,
- XK_F26 = 0xffd7,
- XK_R6 = 0xffd7,
- XK_F27 = 0xffd8,
- XK_R7 = 0xffd8,
- XK_F28 = 0xffd9,
- XK_R8 = 0xffd9,
- XK_F29 = 0xffda,
- XK_R9 = 0xffda,
- XK_F30 = 0xffdb,
- XK_R10 = 0xffdb,
- XK_F31 = 0xffdc,
- XK_R11 = 0xffdc,
- XK_F32 = 0xffdd,
- XK_R12 = 0xffdd,
- XK_F33 = 0xffde,
- XK_R13 = 0xffde,
- XK_F34 = 0xffdf,
- XK_R14 = 0xffdf,
- XK_F35 = 0xffe0,
- XK_R15 = 0xffe0,
- XK_Shift_L = 0xffe1,
- XK_Shift_R = 0xffe2,
- XK_Control_L = 0xffe3,
- XK_Control_R = 0xffe4,
- XK_Caps_Lock = 0xffe5,
- XK_Shift_Lock = 0xffe6,
- XK_Meta_L = 0xffe7,
- XK_Meta_R = 0xffe8,
- XK_Alt_L = 0xffe9,
- XK_Alt_R = 0xffea,
- XK_Super_L = 0xffeb,
- XK_Super_R = 0xffec,
- XK_Hyper_L = 0xffed,
- XK_Hyper_R = 0xffee,
- XK_ISO_Lock = 0xfe01,
- XK_ISO_Level2_Latch = 0xfe02,
- XK_ISO_Level3_Shift = 0xfe03,
- XK_ISO_Level3_Latch = 0xfe04,
- XK_ISO_Level3_Lock = 0xfe05,
- XK_ISO_Level5_Shift = 0xfe11,
- XK_ISO_Level5_Latch = 0xfe12,
- XK_ISO_Level5_Lock = 0xfe13,
- XK_ISO_Group_Shift = 0xff7e,
- XK_ISO_Group_Latch = 0xfe06,
- XK_ISO_Group_Lock = 0xfe07,
- XK_ISO_Next_Group = 0xfe08,
- XK_ISO_Next_Group_Lock = 0xfe09,
- XK_ISO_Prev_Group = 0xfe0a,
- XK_ISO_Prev_Group_Lock = 0xfe0b,
- XK_ISO_First_Group = 0xfe0c,
- XK_ISO_First_Group_Lock = 0xfe0d,
- XK_ISO_Last_Group = 0xfe0e,
- XK_ISO_Last_Group_Lock = 0xfe0f,
- XK_ISO_Left_Tab = 0xfe20,
- XK_ISO_Move_Line_Up = 0xfe21,
- XK_ISO_Move_Line_Down = 0xfe22,
- XK_ISO_Partial_Line_Up = 0xfe23,
- XK_ISO_Partial_Line_Down = 0xfe24,
- XK_ISO_Partial_Space_Left = 0xfe25,
- XK_ISO_Partial_Space_Right = 0xfe26,
- XK_ISO_Set_Margin_Left = 0xfe27,
- XK_ISO_Set_Margin_Right = 0xfe28,
- XK_ISO_Release_Margin_Left = 0xfe29,
- XK_ISO_Release_Margin_Right = 0xfe2a,
- XK_ISO_Release_Both_Margins = 0xfe2b,
- XK_ISO_Fast_Cursor_Left = 0xfe2c,
- XK_ISO_Fast_Cursor_Right = 0xfe2d,
- XK_ISO_Fast_Cursor_Up = 0xfe2e,
- XK_ISO_Fast_Cursor_Down = 0xfe2f,
- XK_ISO_Continuous_Underline = 0xfe30,
- XK_ISO_Discontinuous_Underline = 0xfe31,
- XK_ISO_Emphasize = 0xfe32,
- XK_ISO_Center_Object = 0xfe33,
- XK_ISO_Enter = 0xfe34,
- XK_dead_grave = 0xfe50,
- XK_dead_acute = 0xfe51,
- XK_dead_circumflex = 0xfe52,
- XK_dead_tilde = 0xfe53,
- XK_dead_perispomeni = 0xfe53,
- XK_dead_macron = 0xfe54,
- XK_dead_breve = 0xfe55,
- XK_dead_abovedot = 0xfe56,
- XK_dead_diaeresis = 0xfe57,
- XK_dead_abovering = 0xfe58,
- XK_dead_doubleacute = 0xfe59,
- XK_dead_caron = 0xfe5a,
- XK_dead_cedilla = 0xfe5b,
- XK_dead_ogonek = 0xfe5c,
- XK_dead_iota = 0xfe5d,
- XK_dead_voiced_sound = 0xfe5e,
- XK_dead_semivoiced_sound = 0xfe5f,
- XK_dead_belowdot = 0xfe60,
- XK_dead_hook = 0xfe61,
- XK_dead_horn = 0xfe62,
- XK_dead_stroke = 0xfe63,
- XK_dead_abovecomma = 0xfe64,
- XK_dead_psili = 0xfe64,
- XK_dead_abovereversedcomma = 0xfe65,
- XK_dead_dasia = 0xfe65,
- XK_dead_doublegrave = 0xfe66,
- XK_dead_belowring = 0xfe67,
- XK_dead_belowmacron = 0xfe68,
- XK_dead_belowcircumflex = 0xfe69,
- XK_dead_belowtilde = 0xfe6a,
- XK_dead_belowbreve = 0xfe6b,
- XK_dead_belowdiaeresis = 0xfe6c,
- XK_dead_invertedbreve = 0xfe6d,
- XK_dead_belowcomma = 0xfe6e,
- XK_dead_currency = 0xfe6f,
- XK_dead_lowline = 0xfe90,
- XK_dead_aboveverticalline = 0xfe91,
- XK_dead_belowverticalline = 0xfe92,
- XK_dead_longsolidusoverlay = 0xfe93,
- XK_dead_a = 0xfe80,
- XK_dead_A = 0xfe81,
- XK_dead_e = 0xfe82,
- XK_dead_E = 0xfe83,
- XK_dead_i = 0xfe84,
- XK_dead_I = 0xfe85,
- XK_dead_o = 0xfe86,
- XK_dead_O = 0xfe87,
- XK_dead_u = 0xfe88,
- XK_dead_U = 0xfe89,
- XK_dead_small_schwa = 0xfe8a,
- XK_dead_capital_schwa = 0xfe8b,
- XK_dead_greek = 0xfe8c,
- XK_First_Virtual_Screen = 0xfed0,
- XK_Prev_Virtual_Screen = 0xfed1,
- XK_Next_Virtual_Screen = 0xfed2,
- XK_Last_Virtual_Screen = 0xfed4,
- XK_Terminate_Server = 0xfed5,
- XK_AccessX_Enable = 0xfe70,
- XK_AccessX_Feedback_Enable = 0xfe71,
- XK_RepeatKeys_Enable = 0xfe72,
- XK_SlowKeys_Enable = 0xfe73,
- XK_BounceKeys_Enable = 0xfe74,
- XK_StickyKeys_Enable = 0xfe75,
- XK_MouseKeys_Enable = 0xfe76,
- XK_MouseKeys_Accel_Enable = 0xfe77,
- XK_Overlay1_Enable = 0xfe78,
- XK_Overlay2_Enable = 0xfe79,
- XK_AudibleBell_Enable = 0xfe7a,
- XK_Pointer_Left = 0xfee0,
- XK_Pointer_Right = 0xfee1,
- XK_Pointer_Up = 0xfee2,
- XK_Pointer_Down = 0xfee3,
- XK_Pointer_UpLeft = 0xfee4,
- XK_Pointer_UpRight = 0xfee5,
- XK_Pointer_DownLeft = 0xfee6,
- XK_Pointer_DownRight = 0xfee7,
- XK_Pointer_Button_Dflt = 0xfee8,
- XK_Pointer_Button1 = 0xfee9,
- XK_Pointer_Button2 = 0xfeea,
- XK_Pointer_Button3 = 0xfeeb,
- XK_Pointer_Button4 = 0xfeec,
- XK_Pointer_Button5 = 0xfeed,
- XK_Pointer_DblClick_Dflt = 0xfeee,
- XK_Pointer_DblClick1 = 0xfeef,
- XK_Pointer_DblClick2 = 0xfef0,
- XK_Pointer_DblClick3 = 0xfef1,
- XK_Pointer_DblClick4 = 0xfef2,
- XK_Pointer_DblClick5 = 0xfef3,
- XK_Pointer_Drag_Dflt = 0xfef4,
- XK_Pointer_Drag1 = 0xfef5,
- XK_Pointer_Drag2 = 0xfef6,
- XK_Pointer_Drag3 = 0xfef7,
- XK_Pointer_Drag4 = 0xfef8,
- XK_Pointer_Drag5 = 0xfefd,
- XK_Pointer_EnableKeys = 0xfef9,
- XK_Pointer_Accelerate = 0xfefa,
- XK_Pointer_DfltBtnNext = 0xfefb,
- XK_Pointer_DfltBtnPrev = 0xfefc,
- XK_ch = 0xfea0,
- XK_Ch = 0xfea1,
- XK_CH = 0xfea2,
- XK_c_h = 0xfea3,
- XK_C_h = 0xfea4,
- XK_C_H = 0xfea5,
- XK_3270_Duplicate = 0xfd01,
- XK_3270_FieldMark = 0xfd02,
- XK_3270_Right2 = 0xfd03,
- XK_3270_Left2 = 0xfd04,
- XK_3270_BackTab = 0xfd05,
- XK_3270_EraseEOF = 0xfd06,
- XK_3270_EraseInput = 0xfd07,
- XK_3270_Reset = 0xfd08,
- XK_3270_Quit = 0xfd09,
- XK_3270_PA1 = 0xfd0a,
- XK_3270_PA2 = 0xfd0b,
- XK_3270_PA3 = 0xfd0c,
- XK_3270_Test = 0xfd0d,
- XK_3270_Attn = 0xfd0e,
- XK_3270_CursorBlink = 0xfd0f,
- XK_3270_AltCursor = 0xfd10,
- XK_3270_KeyClick = 0xfd11,
- XK_3270_Jump = 0xfd12,
- XK_3270_Ident = 0xfd13,
- XK_3270_Rule = 0xfd14,
- XK_3270_Copy = 0xfd15,
- XK_3270_Play = 0xfd16,
- XK_3270_Setup = 0xfd17,
- XK_3270_Record = 0xfd18,
- XK_3270_ChangeScreen = 0xfd19,
- XK_3270_DeleteWord = 0xfd1a,
- XK_3270_ExSelect = 0xfd1b,
- XK_3270_CursorSelect = 0xfd1c,
- XK_3270_PrintScreen = 0xfd1d,
- XK_3270_Enter = 0xfd1e,
- XK_space = 0x0020,
- XK_exclam = 0x0021,
- XK_quotedbl = 0x0022,
- XK_numbersign = 0x0023,
- XK_dollar = 0x0024,
- XK_percent = 0x0025,
- XK_ampersand = 0x0026,
- XK_apostrophe = 0x0027,
- XK_quoteright = 0x0027,
- XK_parenleft = 0x0028,
- XK_parenright = 0x0029,
- XK_asterisk = 0x002a,
- XK_plus = 0x002b,
- XK_comma = 0x002c,
- XK_minus = 0x002d,
- XK_period = 0x002e,
- XK_slash = 0x002f,
- XK_0 = 0x0030,
- XK_1 = 0x0031,
- XK_2 = 0x0032,
- XK_3 = 0x0033,
- XK_4 = 0x0034,
- XK_5 = 0x0035,
- XK_6 = 0x0036,
- XK_7 = 0x0037,
- XK_8 = 0x0038,
- XK_9 = 0x0039,
- XK_colon = 0x003a,
- XK_semicolon = 0x003b,
- XK_less = 0x003c,
- XK_equal = 0x003d,
- XK_greater = 0x003e,
- XK_question = 0x003f,
- XK_at = 0x0040,
- XK_A = 0x0041,
- XK_B = 0x0042,
- XK_C = 0x0043,
- XK_D = 0x0044,
- XK_E = 0x0045,
- XK_F = 0x0046,
- XK_G = 0x0047,
- XK_H = 0x0048,
- XK_I = 0x0049,
- XK_J = 0x004a,
- XK_K = 0x004b,
- XK_L = 0x004c,
- XK_M = 0x004d,
- XK_N = 0x004e,
- XK_O = 0x004f,
- XK_P = 0x0050,
- XK_Q = 0x0051,
- XK_R = 0x0052,
- XK_S = 0x0053,
- XK_T = 0x0054,
- XK_U = 0x0055,
- XK_V = 0x0056,
- XK_W = 0x0057,
- XK_X = 0x0058,
- XK_Y = 0x0059,
- XK_Z = 0x005a,
- XK_bracketleft = 0x005b,
- XK_backslash = 0x005c,
- XK_bracketright = 0x005d,
- XK_asciicircum = 0x005e,
- XK_underscore = 0x005f,
- XK_grave = 0x0060,
- XK_quoteleft = 0x0060,
- XK_a = 0x0061,
- XK_b = 0x0062,
- XK_c = 0x0063,
- XK_d = 0x0064,
- XK_e = 0x0065,
- XK_f = 0x0066,
- XK_g = 0x0067,
- XK_h = 0x0068,
- XK_i = 0x0069,
- XK_j = 0x006a,
- XK_k = 0x006b,
- XK_l = 0x006c,
- XK_m = 0x006d,
- XK_n = 0x006e,
- XK_o = 0x006f,
- XK_p = 0x0070,
- XK_q = 0x0071,
- XK_r = 0x0072,
- XK_s = 0x0073,
- XK_t = 0x0074,
- XK_u = 0x0075,
- XK_v = 0x0076,
- XK_w = 0x0077,
- XK_x = 0x0078,
- XK_y = 0x0079,
- XK_z = 0x007a,
- XK_braceleft = 0x007b,
- XK_bar = 0x007c,
- XK_braceright = 0x007d,
- XK_asciitilde = 0x007e,
- XK_nobreakspace = 0x00a0,
- XK_exclamdown = 0x00a1,
- XK_cent = 0x00a2,
- XK_sterling = 0x00a3,
- XK_currency = 0x00a4,
- XK_yen = 0x00a5,
- XK_brokenbar = 0x00a6,
- XK_section = 0x00a7,
- XK_diaeresis = 0x00a8,
- XK_copyright = 0x00a9,
- XK_ordfeminine = 0x00aa,
- XK_guillemotleft = 0x00ab,
- XK_notsign = 0x00ac,
- XK_hyphen = 0x00ad,
- XK_registered = 0x00ae,
- XK_macron = 0x00af,
- XK_degree = 0x00b0,
- XK_plusminus = 0x00b1,
- XK_twosuperior = 0x00b2,
- XK_threesuperior = 0x00b3,
- XK_acute = 0x00b4,
- XK_mu = 0x00b5,
- XK_paragraph = 0x00b6,
- XK_periodcentered = 0x00b7,
- XK_cedilla = 0x00b8,
- XK_onesuperior = 0x00b9,
- XK_masculine = 0x00ba,
- XK_guillemotright = 0x00bb,
- XK_onequarter = 0x00bc,
- XK_onehalf = 0x00bd,
- XK_threequarters = 0x00be,
- XK_questiondown = 0x00bf,
- XK_Agrave = 0x00c0,
- XK_Aacute = 0x00c1,
- XK_Acircumflex = 0x00c2,
- XK_Atilde = 0x00c3,
- XK_Adiaeresis = 0x00c4,
- XK_Aring = 0x00c5,
- XK_AE = 0x00c6,
- XK_Ccedilla = 0x00c7,
- XK_Egrave = 0x00c8,
- XK_Eacute = 0x00c9,
- XK_Ecircumflex = 0x00ca,
- XK_Ediaeresis = 0x00cb,
- XK_Igrave = 0x00cc,
- XK_Iacute = 0x00cd,
- XK_Icircumflex = 0x00ce,
- XK_Idiaeresis = 0x00cf,
- XK_ETH = 0x00d0,
- XK_Eth = 0x00d0,
- XK_Ntilde = 0x00d1,
- XK_Ograve = 0x00d2,
- XK_Oacute = 0x00d3,
- XK_Ocircumflex = 0x00d4,
- XK_Otilde = 0x00d5,
- XK_Odiaeresis = 0x00d6,
- XK_multiply = 0x00d7,
- XK_Oslash = 0x00d8,
- XK_Ooblique = 0x00d8,
- XK_Ugrave = 0x00d9,
- XK_Uacute = 0x00da,
- XK_Ucircumflex = 0x00db,
- XK_Udiaeresis = 0x00dc,
- XK_Yacute = 0x00dd,
- XK_THORN = 0x00de,
- XK_Thorn = 0x00de,
- XK_ssharp = 0x00df,
- XK_agrave = 0x00e0,
- XK_aacute = 0x00e1,
- XK_acircumflex = 0x00e2,
- XK_atilde = 0x00e3,
- XK_adiaeresis = 0x00e4,
- XK_aring = 0x00e5,
- XK_ae = 0x00e6,
- XK_ccedilla = 0x00e7,
- XK_egrave = 0x00e8,
- XK_eacute = 0x00e9,
- XK_ecircumflex = 0x00ea,
- XK_ediaeresis = 0x00eb,
- XK_igrave = 0x00ec,
- XK_iacute = 0x00ed,
- XK_icircumflex = 0x00ee,
- XK_idiaeresis = 0x00ef,
- XK_eth = 0x00f0,
- XK_ntilde = 0x00f1,
- XK_ograve = 0x00f2,
- XK_oacute = 0x00f3,
- XK_ocircumflex = 0x00f4,
- XK_otilde = 0x00f5,
- XK_odiaeresis = 0x00f6,
- XK_division = 0x00f7,
- XK_oslash = 0x00f8,
- XK_ooblique = 0x00f8,
- XK_ugrave = 0x00f9,
- XK_uacute = 0x00fa,
- XK_ucircumflex = 0x00fb,
- XK_udiaeresis = 0x00fc,
- XK_yacute = 0x00fd,
- XK_thorn = 0x00fe,
- XK_ydiaeresis = 0x00ff,
- XK_Aogonek = 0x01a1,
- XK_breve = 0x01a2,
- XK_Lstroke = 0x01a3,
- XK_Lcaron = 0x01a5,
- XK_Sacute = 0x01a6,
- XK_Scaron = 0x01a9,
- XK_Scedilla = 0x01aa,
- XK_Tcaron = 0x01ab,
- XK_Zacute = 0x01ac,
- XK_Zcaron = 0x01ae,
- XK_Zabovedot = 0x01af,
- XK_aogonek = 0x01b1,
- XK_ogonek = 0x01b2,
- XK_lstroke = 0x01b3,
- XK_lcaron = 0x01b5,
- XK_sacute = 0x01b6,
- XK_caron = 0x01b7,
- XK_scaron = 0x01b9,
- XK_scedilla = 0x01ba,
- XK_tcaron = 0x01bb,
- XK_zacute = 0x01bc,
- XK_doubleacute = 0x01bd,
- XK_zcaron = 0x01be,
- XK_zabovedot = 0x01bf,
- XK_Racute = 0x01c0,
- XK_Abreve = 0x01c3,
- XK_Lacute = 0x01c5,
- XK_Cacute = 0x01c6,
- XK_Ccaron = 0x01c8,
- XK_Eogonek = 0x01ca,
- XK_Ecaron = 0x01cc,
- XK_Dcaron = 0x01cf,
- XK_Dstroke = 0x01d0,
- XK_Nacute = 0x01d1,
- XK_Ncaron = 0x01d2,
- XK_Odoubleacute = 0x01d5,
- XK_Rcaron = 0x01d8,
- XK_Uring = 0x01d9,
- XK_Udoubleacute = 0x01db,
- XK_Tcedilla = 0x01de,
- XK_racute = 0x01e0,
- XK_abreve = 0x01e3,
- XK_lacute = 0x01e5,
- XK_cacute = 0x01e6,
- XK_ccaron = 0x01e8,
- XK_eogonek = 0x01ea,
- XK_ecaron = 0x01ec,
- XK_dcaron = 0x01ef,
- XK_dstroke = 0x01f0,
- XK_nacute = 0x01f1,
- XK_ncaron = 0x01f2,
- XK_odoubleacute = 0x01f5,
- XK_rcaron = 0x01f8,
- XK_uring = 0x01f9,
- XK_udoubleacute = 0x01fb,
- XK_tcedilla = 0x01fe,
- XK_abovedot = 0x01ff,
- XK_Hstroke = 0x02a1,
- XK_Hcircumflex = 0x02a6,
- XK_Iabovedot = 0x02a9,
- XK_Gbreve = 0x02ab,
- XK_Jcircumflex = 0x02ac,
- XK_hstroke = 0x02b1,
- XK_hcircumflex = 0x02b6,
- XK_idotless = 0x02b9,
- XK_gbreve = 0x02bb,
- XK_jcircumflex = 0x02bc,
- XK_Cabovedot = 0x02c5,
- XK_Ccircumflex = 0x02c6,
- XK_Gabovedot = 0x02d5,
- XK_Gcircumflex = 0x02d8,
- XK_Ubreve = 0x02dd,
- XK_Scircumflex = 0x02de,
- XK_cabovedot = 0x02e5,
- XK_ccircumflex = 0x02e6,
- XK_gabovedot = 0x02f5,
- XK_gcircumflex = 0x02f8,
- XK_ubreve = 0x02fd,
- XK_scircumflex = 0x02fe,
- XK_kra = 0x03a2,
- XK_kappa = 0x03a2,
- XK_Rcedilla = 0x03a3,
- XK_Itilde = 0x03a5,
- XK_Lcedilla = 0x03a6,
- XK_Emacron = 0x03aa,
- XK_Gcedilla = 0x03ab,
- XK_Tslash = 0x03ac,
- XK_rcedilla = 0x03b3,
- XK_itilde = 0x03b5,
- XK_lcedilla = 0x03b6,
- XK_emacron = 0x03ba,
- XK_gcedilla = 0x03bb,
- XK_tslash = 0x03bc,
- XK_ENG = 0x03bd,
- XK_eng = 0x03bf,
- XK_Amacron = 0x03c0,
- XK_Iogonek = 0x03c7,
- XK_Eabovedot = 0x03cc,
- XK_Imacron = 0x03cf,
- XK_Ncedilla = 0x03d1,
- XK_Omacron = 0x03d2,
- XK_Kcedilla = 0x03d3,
- XK_Uogonek = 0x03d9,
- XK_Utilde = 0x03dd,
- XK_Umacron = 0x03de,
- XK_amacron = 0x03e0,
- XK_iogonek = 0x03e7,
- XK_eabovedot = 0x03ec,
- XK_imacron = 0x03ef,
- XK_ncedilla = 0x03f1,
- XK_omacron = 0x03f2,
- XK_kcedilla = 0x03f3,
- XK_uogonek = 0x03f9,
- XK_utilde = 0x03fd,
- XK_umacron = 0x03fe,
- XK_Wcircumflex = 0x1000174,
- XK_wcircumflex = 0x1000175,
- XK_Ycircumflex = 0x1000176,
- XK_ycircumflex = 0x1000177,
- XK_Babovedot = 0x1001e02,
- XK_babovedot = 0x1001e03,
- XK_Dabovedot = 0x1001e0a,
- XK_dabovedot = 0x1001e0b,
- XK_Fabovedot = 0x1001e1e,
- XK_fabovedot = 0x1001e1f,
- XK_Mabovedot = 0x1001e40,
- XK_mabovedot = 0x1001e41,
- XK_Pabovedot = 0x1001e56,
- XK_pabovedot = 0x1001e57,
- XK_Sabovedot = 0x1001e60,
- XK_sabovedot = 0x1001e61,
- XK_Tabovedot = 0x1001e6a,
- XK_tabovedot = 0x1001e6b,
- XK_Wgrave = 0x1001e80,
- XK_wgrave = 0x1001e81,
- XK_Wacute = 0x1001e82,
- XK_wacute = 0x1001e83,
- XK_Wdiaeresis = 0x1001e84,
- XK_wdiaeresis = 0x1001e85,
- XK_Ygrave = 0x1001ef2,
- XK_ygrave = 0x1001ef3,
- XK_OE = 0x13bc,
- XK_oe = 0x13bd,
- XK_Ydiaeresis = 0x13be,
- XK_overline = 0x047e,
- XK_kana_fullstop = 0x04a1,
- XK_kana_openingbracket = 0x04a2,
- XK_kana_closingbracket = 0x04a3,
- XK_kana_comma = 0x04a4,
- XK_kana_conjunctive = 0x04a5,
- XK_kana_middledot = 0x04a5,
- XK_kana_WO = 0x04a6,
- XK_kana_a = 0x04a7,
- XK_kana_i = 0x04a8,
- XK_kana_u = 0x04a9,
- XK_kana_e = 0x04aa,
- XK_kana_o = 0x04ab,
- XK_kana_ya = 0x04ac,
- XK_kana_yu = 0x04ad,
- XK_kana_yo = 0x04ae,
- XK_kana_tsu = 0x04af,
- XK_kana_tu = 0x04af,
- XK_prolongedsound = 0x04b0,
- XK_kana_A = 0x04b1,
- XK_kana_I = 0x04b2,
- XK_kana_U = 0x04b3,
- XK_kana_E = 0x04b4,
- XK_kana_O = 0x04b5,
- XK_kana_KA = 0x04b6,
- XK_kana_KI = 0x04b7,
- XK_kana_KU = 0x04b8,
- XK_kana_KE = 0x04b9,
- XK_kana_KO = 0x04ba,
- XK_kana_SA = 0x04bb,
- XK_kana_SHI = 0x04bc,
- XK_kana_SU = 0x04bd,
- XK_kana_SE = 0x04be,
- XK_kana_SO = 0x04bf,
- XK_kana_TA = 0x04c0,
- XK_kana_CHI = 0x04c1,
- XK_kana_TI = 0x04c1,
- XK_kana_TSU = 0x04c2,
- XK_kana_TU = 0x04c2,
- XK_kana_TE = 0x04c3,
- XK_kana_TO = 0x04c4,
- XK_kana_NA = 0x04c5,
- XK_kana_NI = 0x04c6,
- XK_kana_NU = 0x04c7,
- XK_kana_NE = 0x04c8,
- XK_kana_NO = 0x04c9,
- XK_kana_HA = 0x04ca,
- XK_kana_HI = 0x04cb,
- XK_kana_FU = 0x04cc,
- XK_kana_HU = 0x04cc,
- XK_kana_HE = 0x04cd,
- XK_kana_HO = 0x04ce,
- XK_kana_MA = 0x04cf,
- XK_kana_MI = 0x04d0,
- XK_kana_MU = 0x04d1,
- XK_kana_ME = 0x04d2,
- XK_kana_MO = 0x04d3,
- XK_kana_YA = 0x04d4,
- XK_kana_YU = 0x04d5,
- XK_kana_YO = 0x04d6,
- XK_kana_RA = 0x04d7,
- XK_kana_RI = 0x04d8,
- XK_kana_RU = 0x04d9,
- XK_kana_RE = 0x04da,
- XK_kana_RO = 0x04db,
- XK_kana_WA = 0x04dc,
- XK_kana_N = 0x04dd,
- XK_voicedsound = 0x04de,
- XK_semivoicedsound = 0x04df,
- XK_kana_switch = 0xff7e,
- XK_Farsi_0 = 0x10006f0,
- XK_Farsi_1 = 0x10006f1,
- XK_Farsi_2 = 0x10006f2,
- XK_Farsi_3 = 0x10006f3,
- XK_Farsi_4 = 0x10006f4,
- XK_Farsi_5 = 0x10006f5,
- XK_Farsi_6 = 0x10006f6,
- XK_Farsi_7 = 0x10006f7,
- XK_Farsi_8 = 0x10006f8,
- XK_Farsi_9 = 0x10006f9,
- XK_Arabic_percent = 0x100066a,
- XK_Arabic_superscript_alef = 0x1000670,
- XK_Arabic_tteh = 0x1000679,
- XK_Arabic_peh = 0x100067e,
- XK_Arabic_tcheh = 0x1000686,
- XK_Arabic_ddal = 0x1000688,
- XK_Arabic_rreh = 0x1000691,
- XK_Arabic_comma = 0x05ac,
- XK_Arabic_fullstop = 0x10006d4,
- XK_Arabic_0 = 0x1000660,
- XK_Arabic_1 = 0x1000661,
- XK_Arabic_2 = 0x1000662,
- XK_Arabic_3 = 0x1000663,
- XK_Arabic_4 = 0x1000664,
- XK_Arabic_5 = 0x1000665,
- XK_Arabic_6 = 0x1000666,
- XK_Arabic_7 = 0x1000667,
- XK_Arabic_8 = 0x1000668,
- XK_Arabic_9 = 0x1000669,
- XK_Arabic_semicolon = 0x05bb,
- XK_Arabic_question_mark = 0x05bf,
- XK_Arabic_hamza = 0x05c1,
- XK_Arabic_maddaonalef = 0x05c2,
- XK_Arabic_hamzaonalef = 0x05c3,
- XK_Arabic_hamzaonwaw = 0x05c4,
- XK_Arabic_hamzaunderalef = 0x05c5,
- XK_Arabic_hamzaonyeh = 0x05c6,
- XK_Arabic_alef = 0x05c7,
- XK_Arabic_beh = 0x05c8,
- XK_Arabic_tehmarbuta = 0x05c9,
- XK_Arabic_teh = 0x05ca,
- XK_Arabic_theh = 0x05cb,
- XK_Arabic_jeem = 0x05cc,
- XK_Arabic_hah = 0x05cd,
- XK_Arabic_khah = 0x05ce,
- XK_Arabic_dal = 0x05cf,
- XK_Arabic_thal = 0x05d0,
- XK_Arabic_ra = 0x05d1,
- XK_Arabic_zain = 0x05d2,
- XK_Arabic_seen = 0x05d3,
- XK_Arabic_sheen = 0x05d4,
- XK_Arabic_sad = 0x05d5,
- XK_Arabic_dad = 0x05d6,
- XK_Arabic_tah = 0x05d7,
- XK_Arabic_zah = 0x05d8,
- XK_Arabic_ain = 0x05d9,
- XK_Arabic_ghain = 0x05da,
- XK_Arabic_tatweel = 0x05e0,
- XK_Arabic_feh = 0x05e1,
- XK_Arabic_qaf = 0x05e2,
- XK_Arabic_kaf = 0x05e3,
- XK_Arabic_lam = 0x05e4,
- XK_Arabic_meem = 0x05e5,
- XK_Arabic_noon = 0x05e6,
- XK_Arabic_ha = 0x05e7,
- XK_Arabic_heh = 0x05e7,
- XK_Arabic_waw = 0x05e8,
- XK_Arabic_alefmaksura = 0x05e9,
- XK_Arabic_yeh = 0x05ea,
- XK_Arabic_fathatan = 0x05eb,
- XK_Arabic_dammatan = 0x05ec,
- XK_Arabic_kasratan = 0x05ed,
- XK_Arabic_fatha = 0x05ee,
- XK_Arabic_damma = 0x05ef,
- XK_Arabic_kasra = 0x05f0,
- XK_Arabic_shadda = 0x05f1,
- XK_Arabic_sukun = 0x05f2,
- XK_Arabic_madda_above = 0x1000653,
- XK_Arabic_hamza_above = 0x1000654,
- XK_Arabic_hamza_below = 0x1000655,
- XK_Arabic_jeh = 0x1000698,
- XK_Arabic_veh = 0x10006a4,
- XK_Arabic_keheh = 0x10006a9,
- XK_Arabic_gaf = 0x10006af,
- XK_Arabic_noon_ghunna = 0x10006ba,
- XK_Arabic_heh_doachashmee = 0x10006be,
- XK_Farsi_yeh = 0x10006cc,
- XK_Arabic_farsi_yeh = 0x10006cc,
- XK_Arabic_yeh_baree = 0x10006d2,
- XK_Arabic_heh_goal = 0x10006c1,
- XK_Arabic_switch = 0xff7e,
- XK_Cyrillic_GHE_bar = 0x1000492,
- XK_Cyrillic_ghe_bar = 0x1000493,
- XK_Cyrillic_ZHE_descender = 0x1000496,
- XK_Cyrillic_zhe_descender = 0x1000497,
- XK_Cyrillic_KA_descender = 0x100049a,
- XK_Cyrillic_ka_descender = 0x100049b,
- XK_Cyrillic_KA_vertstroke = 0x100049c,
- XK_Cyrillic_ka_vertstroke = 0x100049d,
- XK_Cyrillic_EN_descender = 0x10004a2,
- XK_Cyrillic_en_descender = 0x10004a3,
- XK_Cyrillic_U_straight = 0x10004ae,
- XK_Cyrillic_u_straight = 0x10004af,
- XK_Cyrillic_U_straight_bar = 0x10004b0,
- XK_Cyrillic_u_straight_bar = 0x10004b1,
- XK_Cyrillic_HA_descender = 0x10004b2,
- XK_Cyrillic_ha_descender = 0x10004b3,
- XK_Cyrillic_CHE_descender = 0x10004b6,
- XK_Cyrillic_che_descender = 0x10004b7,
- XK_Cyrillic_CHE_vertstroke = 0x10004b8,
- XK_Cyrillic_che_vertstroke = 0x10004b9,
- XK_Cyrillic_SHHA = 0x10004ba,
- XK_Cyrillic_shha = 0x10004bb,
- XK_Cyrillic_SCHWA = 0x10004d8,
- XK_Cyrillic_schwa = 0x10004d9,
- XK_Cyrillic_I_macron = 0x10004e2,
- XK_Cyrillic_i_macron = 0x10004e3,
- XK_Cyrillic_O_bar = 0x10004e8,
- XK_Cyrillic_o_bar = 0x10004e9,
- XK_Cyrillic_U_macron = 0x10004ee,
- XK_Cyrillic_u_macron = 0x10004ef,
- XK_Serbian_dje = 0x06a1,
- XK_Macedonia_gje = 0x06a2,
- XK_Cyrillic_io = 0x06a3,
- XK_Ukrainian_ie = 0x06a4,
- XK_Ukranian_je = 0x06a4,
- XK_Macedonia_dse = 0x06a5,
- XK_Ukrainian_i = 0x06a6,
- XK_Ukranian_i = 0x06a6,
- XK_Ukrainian_yi = 0x06a7,
- XK_Ukranian_yi = 0x06a7,
- XK_Cyrillic_je = 0x06a8,
- XK_Serbian_je = 0x06a8,
- XK_Cyrillic_lje = 0x06a9,
- XK_Serbian_lje = 0x06a9,
- XK_Cyrillic_nje = 0x06aa,
- XK_Serbian_nje = 0x06aa,
- XK_Serbian_tshe = 0x06ab,
- XK_Macedonia_kje = 0x06ac,
- XK_Ukrainian_ghe_with_upturn = 0x06ad,
- XK_Byelorussian_shortu = 0x06ae,
- XK_Cyrillic_dzhe = 0x06af,
- XK_Serbian_dze = 0x06af,
- XK_numerosign = 0x06b0,
- XK_Serbian_DJE = 0x06b1,
- XK_Macedonia_GJE = 0x06b2,
- XK_Cyrillic_IO = 0x06b3,
- XK_Ukrainian_IE = 0x06b4,
- XK_Ukranian_JE = 0x06b4,
- XK_Macedonia_DSE = 0x06b5,
- XK_Ukrainian_I = 0x06b6,
- XK_Ukranian_I = 0x06b6,
- XK_Ukrainian_YI = 0x06b7,
- XK_Ukranian_YI = 0x06b7,
- XK_Cyrillic_JE = 0x06b8,
- XK_Serbian_JE = 0x06b8,
- XK_Cyrillic_LJE = 0x06b9,
- XK_Serbian_LJE = 0x06b9,
- XK_Cyrillic_NJE = 0x06ba,
- XK_Serbian_NJE = 0x06ba,
- XK_Serbian_TSHE = 0x06bb,
- XK_Macedonia_KJE = 0x06bc,
- XK_Ukrainian_GHE_WITH_UPTURN = 0x06bd,
- XK_Byelorussian_SHORTU = 0x06be,
- XK_Cyrillic_DZHE = 0x06bf,
- XK_Serbian_DZE = 0x06bf,
- XK_Cyrillic_yu = 0x06c0,
- XK_Cyrillic_a = 0x06c1,
- XK_Cyrillic_be = 0x06c2,
- XK_Cyrillic_tse = 0x06c3,
- XK_Cyrillic_de = 0x06c4,
- XK_Cyrillic_ie = 0x06c5,
- XK_Cyrillic_ef = 0x06c6,
- XK_Cyrillic_ghe = 0x06c7,
- XK_Cyrillic_ha = 0x06c8,
- XK_Cyrillic_i = 0x06c9,
- XK_Cyrillic_shorti = 0x06ca,
- XK_Cyrillic_ka = 0x06cb,
- XK_Cyrillic_el = 0x06cc,
- XK_Cyrillic_em = 0x06cd,
- XK_Cyrillic_en = 0x06ce,
- XK_Cyrillic_o = 0x06cf,
- XK_Cyrillic_pe = 0x06d0,
- XK_Cyrillic_ya = 0x06d1,
- XK_Cyrillic_er = 0x06d2,
- XK_Cyrillic_es = 0x06d3,
- XK_Cyrillic_te = 0x06d4,
- XK_Cyrillic_u = 0x06d5,
- XK_Cyrillic_zhe = 0x06d6,
- XK_Cyrillic_ve = 0x06d7,
- XK_Cyrillic_softsign = 0x06d8,
- XK_Cyrillic_yeru = 0x06d9,
- XK_Cyrillic_ze = 0x06da,
- XK_Cyrillic_sha = 0x06db,
- XK_Cyrillic_e = 0x06dc,
- XK_Cyrillic_shcha = 0x06dd,
- XK_Cyrillic_che = 0x06de,
- XK_Cyrillic_hardsign = 0x06df,
- XK_Cyrillic_YU = 0x06e0,
- XK_Cyrillic_A = 0x06e1,
- XK_Cyrillic_BE = 0x06e2,
- XK_Cyrillic_TSE = 0x06e3,
- XK_Cyrillic_DE = 0x06e4,
- XK_Cyrillic_IE = 0x06e5,
- XK_Cyrillic_EF = 0x06e6,
- XK_Cyrillic_GHE = 0x06e7,
- XK_Cyrillic_HA = 0x06e8,
- XK_Cyrillic_I = 0x06e9,
- XK_Cyrillic_SHORTI = 0x06ea,
- XK_Cyrillic_KA = 0x06eb,
- XK_Cyrillic_EL = 0x06ec,
- XK_Cyrillic_EM = 0x06ed,
- XK_Cyrillic_EN = 0x06ee,
- XK_Cyrillic_O = 0x06ef,
- XK_Cyrillic_PE = 0x06f0,
- XK_Cyrillic_YA = 0x06f1,
- XK_Cyrillic_ER = 0x06f2,
- XK_Cyrillic_ES = 0x06f3,
- XK_Cyrillic_TE = 0x06f4,
- XK_Cyrillic_U = 0x06f5,
- XK_Cyrillic_ZHE = 0x06f6,
- XK_Cyrillic_VE = 0x06f7,
- XK_Cyrillic_SOFTSIGN = 0x06f8,
- XK_Cyrillic_YERU = 0x06f9,
- XK_Cyrillic_ZE = 0x06fa,
- XK_Cyrillic_SHA = 0x06fb,
- XK_Cyrillic_E = 0x06fc,
- XK_Cyrillic_SHCHA = 0x06fd,
- XK_Cyrillic_CHE = 0x06fe,
- XK_Cyrillic_HARDSIGN = 0x06ff,
- XK_Greek_ALPHAaccent = 0x07a1,
- XK_Greek_EPSILONaccent = 0x07a2,
- XK_Greek_ETAaccent = 0x07a3,
- XK_Greek_IOTAaccent = 0x07a4,
- XK_Greek_IOTAdieresis = 0x07a5,
- XK_Greek_IOTAdiaeresis = 0x07a5,
- XK_Greek_OMICRONaccent = 0x07a7,
- XK_Greek_UPSILONaccent = 0x07a8,
- XK_Greek_UPSILONdieresis = 0x07a9,
- XK_Greek_OMEGAaccent = 0x07ab,
- XK_Greek_accentdieresis = 0x07ae,
- XK_Greek_horizbar = 0x07af,
- XK_Greek_alphaaccent = 0x07b1,
- XK_Greek_epsilonaccent = 0x07b2,
- XK_Greek_etaaccent = 0x07b3,
- XK_Greek_iotaaccent = 0x07b4,
- XK_Greek_iotadieresis = 0x07b5,
- XK_Greek_iotaaccentdieresis = 0x07b6,
- XK_Greek_omicronaccent = 0x07b7,
- XK_Greek_upsilonaccent = 0x07b8,
- XK_Greek_upsilondieresis = 0x07b9,
- XK_Greek_upsilonaccentdieresis = 0x07ba,
- XK_Greek_omegaaccent = 0x07bb,
- XK_Greek_ALPHA = 0x07c1,
- XK_Greek_BETA = 0x07c2,
- XK_Greek_GAMMA = 0x07c3,
- XK_Greek_DELTA = 0x07c4,
- XK_Greek_EPSILON = 0x07c5,
- XK_Greek_ZETA = 0x07c6,
- XK_Greek_ETA = 0x07c7,
- XK_Greek_THETA = 0x07c8,
- XK_Greek_IOTA = 0x07c9,
- XK_Greek_KAPPA = 0x07ca,
- XK_Greek_LAMDA = 0x07cb,
- XK_Greek_LAMBDA = 0x07cb,
- XK_Greek_MU = 0x07cc,
- XK_Greek_NU = 0x07cd,
- XK_Greek_XI = 0x07ce,
- XK_Greek_OMICRON = 0x07cf,
- XK_Greek_PI = 0x07d0,
- XK_Greek_RHO = 0x07d1,
- XK_Greek_SIGMA = 0x07d2,
- XK_Greek_TAU = 0x07d4,
- XK_Greek_UPSILON = 0x07d5,
- XK_Greek_PHI = 0x07d6,
- XK_Greek_CHI = 0x07d7,
- XK_Greek_PSI = 0x07d8,
- XK_Greek_OMEGA = 0x07d9,
- XK_Greek_alpha = 0x07e1,
- XK_Greek_beta = 0x07e2,
- XK_Greek_gamma = 0x07e3,
- XK_Greek_delta = 0x07e4,
- XK_Greek_epsilon = 0x07e5,
- XK_Greek_zeta = 0x07e6,
- XK_Greek_eta = 0x07e7,
- XK_Greek_theta = 0x07e8,
- XK_Greek_iota = 0x07e9,
- XK_Greek_kappa = 0x07ea,
- XK_Greek_lamda = 0x07eb,
- XK_Greek_lambda = 0x07eb,
- XK_Greek_mu = 0x07ec,
- XK_Greek_nu = 0x07ed,
- XK_Greek_xi = 0x07ee,
- XK_Greek_omicron = 0x07ef,
- XK_Greek_pi = 0x07f0,
- XK_Greek_rho = 0x07f1,
- XK_Greek_sigma = 0x07f2,
- XK_Greek_finalsmallsigma = 0x07f3,
- XK_Greek_tau = 0x07f4,
- XK_Greek_upsilon = 0x07f5,
- XK_Greek_phi = 0x07f6,
- XK_Greek_chi = 0x07f7,
- XK_Greek_psi = 0x07f8,
- XK_Greek_omega = 0x07f9,
- XK_Greek_switch = 0xff7e,
- XK_leftradical = 0x08a1,
- XK_topleftradical = 0x08a2,
- XK_horizconnector = 0x08a3,
- XK_topintegral = 0x08a4,
- XK_botintegral = 0x08a5,
- XK_vertconnector = 0x08a6,
- XK_topleftsqbracket = 0x08a7,
- XK_botleftsqbracket = 0x08a8,
- XK_toprightsqbracket = 0x08a9,
- XK_botrightsqbracket = 0x08aa,
- XK_topleftparens = 0x08ab,
- XK_botleftparens = 0x08ac,
- XK_toprightparens = 0x08ad,
- XK_botrightparens = 0x08ae,
- XK_leftmiddlecurlybrace = 0x08af,
- XK_rightmiddlecurlybrace = 0x08b0,
- XK_topleftsummation = 0x08b1,
- XK_botleftsummation = 0x08b2,
- XK_topvertsummationconnector = 0x08b3,
- XK_botvertsummationconnector = 0x08b4,
- XK_toprightsummation = 0x08b5,
- XK_botrightsummation = 0x08b6,
- XK_rightmiddlesummation = 0x08b7,
- XK_lessthanequal = 0x08bc,
- XK_notequal = 0x08bd,
- XK_greaterthanequal = 0x08be,
- XK_integral = 0x08bf,
- XK_therefore = 0x08c0,
- XK_variation = 0x08c1,
- XK_infinity = 0x08c2,
- XK_nabla = 0x08c5,
- XK_approximate = 0x08c8,
- XK_similarequal = 0x08c9,
- XK_ifonlyif = 0x08cd,
- XK_implies = 0x08ce,
- XK_identical = 0x08cf,
- XK_radical = 0x08d6,
- XK_includedin = 0x08da,
- XK_includes = 0x08db,
- XK_intersection = 0x08dc,
- XK_union = 0x08dd,
- XK_logicaland = 0x08de,
- XK_logicalor = 0x08df,
- XK_partialderivative = 0x08ef,
- XK_function = 0x08f6,
- XK_leftarrow = 0x08fb,
- XK_uparrow = 0x08fc,
- XK_rightarrow = 0x08fd,
- XK_downarrow = 0x08fe,
- XK_blank = 0x09df,
- XK_soliddiamond = 0x09e0,
- XK_checkerboard = 0x09e1,
- XK_ht = 0x09e2,
- XK_ff = 0x09e3,
- XK_cr = 0x09e4,
- XK_lf = 0x09e5,
- XK_nl = 0x09e8,
- XK_vt = 0x09e9,
- XK_lowrightcorner = 0x09ea,
- XK_uprightcorner = 0x09eb,
- XK_upleftcorner = 0x09ec,
- XK_lowleftcorner = 0x09ed,
- XK_crossinglines = 0x09ee,
- XK_horizlinescan1 = 0x09ef,
- XK_horizlinescan3 = 0x09f0,
- XK_horizlinescan5 = 0x09f1,
- XK_horizlinescan7 = 0x09f2,
- XK_horizlinescan9 = 0x09f3,
- XK_leftt = 0x09f4,
- XK_rightt = 0x09f5,
- XK_bott = 0x09f6,
- XK_topt = 0x09f7,
- XK_vertbar = 0x09f8,
- XK_emspace = 0x0aa1,
- XK_enspace = 0x0aa2,
- XK_em3space = 0x0aa3,
- XK_em4space = 0x0aa4,
- XK_digitspace = 0x0aa5,
- XK_punctspace = 0x0aa6,
- XK_thinspace = 0x0aa7,
- XK_hairspace = 0x0aa8,
- XK_emdash = 0x0aa9,
- XK_endash = 0x0aaa,
- XK_signifblank = 0x0aac,
- XK_ellipsis = 0x0aae,
- XK_doubbaselinedot = 0x0aaf,
- XK_onethird = 0x0ab0,
- XK_twothirds = 0x0ab1,
- XK_onefifth = 0x0ab2,
- XK_twofifths = 0x0ab3,
- XK_threefifths = 0x0ab4,
- XK_fourfifths = 0x0ab5,
- XK_onesixth = 0x0ab6,
- XK_fivesixths = 0x0ab7,
- XK_careof = 0x0ab8,
- XK_figdash = 0x0abb,
- XK_leftanglebracket = 0x0abc,
- XK_decimalpoint = 0x0abd,
- XK_rightanglebracket = 0x0abe,
- XK_marker = 0x0abf,
- XK_oneeighth = 0x0ac3,
- XK_threeeighths = 0x0ac4,
- XK_fiveeighths = 0x0ac5,
- XK_seveneighths = 0x0ac6,
- XK_trademark = 0x0ac9,
- XK_signaturemark = 0x0aca,
- XK_trademarkincircle = 0x0acb,
- XK_leftopentriangle = 0x0acc,
- XK_rightopentriangle = 0x0acd,
- XK_emopencircle = 0x0ace,
- XK_emopenrectangle = 0x0acf,
- XK_leftsinglequotemark = 0x0ad0,
- XK_rightsinglequotemark = 0x0ad1,
- XK_leftdoublequotemark = 0x0ad2,
- XK_rightdoublequotemark = 0x0ad3,
- XK_prescription = 0x0ad4,
- XK_permille = 0x0ad5,
- XK_minutes = 0x0ad6,
- XK_seconds = 0x0ad7,
- XK_latincross = 0x0ad9,
- XK_hexagram = 0x0ada,
- XK_filledrectbullet = 0x0adb,
- XK_filledlefttribullet = 0x0adc,
- XK_filledrighttribullet = 0x0add,
- XK_emfilledcircle = 0x0ade,
- XK_emfilledrect = 0x0adf,
- XK_enopencircbullet = 0x0ae0,
- XK_enopensquarebullet = 0x0ae1,
- XK_openrectbullet = 0x0ae2,
- XK_opentribulletup = 0x0ae3,
- XK_opentribulletdown = 0x0ae4,
- XK_openstar = 0x0ae5,
- XK_enfilledcircbullet = 0x0ae6,
- XK_enfilledsqbullet = 0x0ae7,
- XK_filledtribulletup = 0x0ae8,
- XK_filledtribulletdown = 0x0ae9,
- XK_leftpointer = 0x0aea,
- XK_rightpointer = 0x0aeb,
- XK_club = 0x0aec,
- XK_diamond = 0x0aed,
- XK_heart = 0x0aee,
- XK_maltesecross = 0x0af0,
- XK_dagger = 0x0af1,
- XK_doubledagger = 0x0af2,
- XK_checkmark = 0x0af3,
- XK_ballotcross = 0x0af4,
- XK_musicalsharp = 0x0af5,
- XK_musicalflat = 0x0af6,
- XK_malesymbol = 0x0af7,
- XK_femalesymbol = 0x0af8,
- XK_telephone = 0x0af9,
- XK_telephonerecorder = 0x0afa,
- XK_phonographcopyright = 0x0afb,
- XK_caret = 0x0afc,
- XK_singlelowquotemark = 0x0afd,
- XK_doublelowquotemark = 0x0afe,
- XK_cursor = 0x0aff,
- XK_leftcaret = 0x0ba3,
- XK_rightcaret = 0x0ba6,
- XK_downcaret = 0x0ba8,
- XK_upcaret = 0x0ba9,
- XK_overbar = 0x0bc0,
- XK_downtack = 0x0bc2,
- XK_upshoe = 0x0bc3,
- XK_downstile = 0x0bc4,
- XK_underbar = 0x0bc6,
- XK_jot = 0x0bca,
- XK_quad = 0x0bcc,
- XK_uptack = 0x0bce,
- XK_circle = 0x0bcf,
- XK_upstile = 0x0bd3,
- XK_downshoe = 0x0bd6,
- XK_rightshoe = 0x0bd8,
- XK_leftshoe = 0x0bda,
- XK_lefttack = 0x0bdc,
- XK_righttack = 0x0bfc,
- XK_hebrew_doublelowline = 0x0cdf,
- XK_hebrew_aleph = 0x0ce0,
- XK_hebrew_bet = 0x0ce1,
- XK_hebrew_beth = 0x0ce1,
- XK_hebrew_gimel = 0x0ce2,
- XK_hebrew_gimmel = 0x0ce2,
- XK_hebrew_dalet = 0x0ce3,
- XK_hebrew_daleth = 0x0ce3,
- XK_hebrew_he = 0x0ce4,
- XK_hebrew_waw = 0x0ce5,
- XK_hebrew_zain = 0x0ce6,
- XK_hebrew_zayin = 0x0ce6,
- XK_hebrew_chet = 0x0ce7,
- XK_hebrew_het = 0x0ce7,
- XK_hebrew_tet = 0x0ce8,
- XK_hebrew_teth = 0x0ce8,
- XK_hebrew_yod = 0x0ce9,
- XK_hebrew_finalkaph = 0x0cea,
- XK_hebrew_kaph = 0x0ceb,
- XK_hebrew_lamed = 0x0cec,
- XK_hebrew_finalmem = 0x0ced,
- XK_hebrew_mem = 0x0cee,
- XK_hebrew_finalnun = 0x0cef,
- XK_hebrew_nun = 0x0cf0,
- XK_hebrew_samech = 0x0cf1,
- XK_hebrew_samekh = 0x0cf1,
- XK_hebrew_ayin = 0x0cf2,
- XK_hebrew_finalpe = 0x0cf3,
- XK_hebrew_pe = 0x0cf4,
- XK_hebrew_finalzade = 0x0cf5,
- XK_hebrew_finalzadi = 0x0cf5,
- XK_hebrew_zade = 0x0cf6,
- XK_hebrew_zadi = 0x0cf6,
- XK_hebrew_qoph = 0x0cf7,
- XK_hebrew_kuf = 0x0cf7,
- XK_hebrew_resh = 0x0cf8,
- XK_hebrew_shin = 0x0cf9,
- XK_hebrew_taw = 0x0cfa,
- XK_hebrew_taf = 0x0cfa,
- XK_Hebrew_switch = 0xff7e,
- XK_Thai_kokai = 0x0da1,
- XK_Thai_khokhai = 0x0da2,
- XK_Thai_khokhuat = 0x0da3,
- XK_Thai_khokhwai = 0x0da4,
- XK_Thai_khokhon = 0x0da5,
- XK_Thai_khorakhang = 0x0da6,
- XK_Thai_ngongu = 0x0da7,
- XK_Thai_chochan = 0x0da8,
- XK_Thai_choching = 0x0da9,
- XK_Thai_chochang = 0x0daa,
- XK_Thai_soso = 0x0dab,
- XK_Thai_chochoe = 0x0dac,
- XK_Thai_yoying = 0x0dad,
- XK_Thai_dochada = 0x0dae,
- XK_Thai_topatak = 0x0daf,
- XK_Thai_thothan = 0x0db0,
- XK_Thai_thonangmontho = 0x0db1,
- XK_Thai_thophuthao = 0x0db2,
- XK_Thai_nonen = 0x0db3,
- XK_Thai_dodek = 0x0db4,
- XK_Thai_totao = 0x0db5,
- XK_Thai_thothung = 0x0db6,
- XK_Thai_thothahan = 0x0db7,
- XK_Thai_thothong = 0x0db8,
- XK_Thai_nonu = 0x0db9,
- XK_Thai_bobaimai = 0x0dba,
- XK_Thai_popla = 0x0dbb,
- XK_Thai_phophung = 0x0dbc,
- XK_Thai_fofa = 0x0dbd,
- XK_Thai_phophan = 0x0dbe,
- XK_Thai_fofan = 0x0dbf,
- XK_Thai_phosamphao = 0x0dc0,
- XK_Thai_moma = 0x0dc1,
- XK_Thai_yoyak = 0x0dc2,
- XK_Thai_rorua = 0x0dc3,
- XK_Thai_ru = 0x0dc4,
- XK_Thai_loling = 0x0dc5,
- XK_Thai_lu = 0x0dc6,
- XK_Thai_wowaen = 0x0dc7,
- XK_Thai_sosala = 0x0dc8,
- XK_Thai_sorusi = 0x0dc9,
- XK_Thai_sosua = 0x0dca,
- XK_Thai_hohip = 0x0dcb,
- XK_Thai_lochula = 0x0dcc,
- XK_Thai_oang = 0x0dcd,
- XK_Thai_honokhuk = 0x0dce,
- XK_Thai_paiyannoi = 0x0dcf,
- XK_Thai_saraa = 0x0dd0,
- XK_Thai_maihanakat = 0x0dd1,
- XK_Thai_saraaa = 0x0dd2,
- XK_Thai_saraam = 0x0dd3,
- XK_Thai_sarai = 0x0dd4,
- XK_Thai_saraii = 0x0dd5,
- XK_Thai_saraue = 0x0dd6,
- XK_Thai_sarauee = 0x0dd7,
- XK_Thai_sarau = 0x0dd8,
- XK_Thai_sarauu = 0x0dd9,
- XK_Thai_phinthu = 0x0dda,
- XK_Thai_maihanakat_maitho = 0x0dde,
- XK_Thai_baht = 0x0ddf,
- XK_Thai_sarae = 0x0de0,
- XK_Thai_saraae = 0x0de1,
- XK_Thai_sarao = 0x0de2,
- XK_Thai_saraaimaimuan = 0x0de3,
- XK_Thai_saraaimaimalai = 0x0de4,
- XK_Thai_lakkhangyao = 0x0de5,
- XK_Thai_maiyamok = 0x0de6,
- XK_Thai_maitaikhu = 0x0de7,
- XK_Thai_maiek = 0x0de8,
- XK_Thai_maitho = 0x0de9,
- XK_Thai_maitri = 0x0dea,
- XK_Thai_maichattawa = 0x0deb,
- XK_Thai_thanthakhat = 0x0dec,
- XK_Thai_nikhahit = 0x0ded,
- XK_Thai_leksun = 0x0df0,
- XK_Thai_leknung = 0x0df1,
- XK_Thai_leksong = 0x0df2,
- XK_Thai_leksam = 0x0df3,
- XK_Thai_leksi = 0x0df4,
- XK_Thai_lekha = 0x0df5,
- XK_Thai_lekhok = 0x0df6,
- XK_Thai_lekchet = 0x0df7,
- XK_Thai_lekpaet = 0x0df8,
- XK_Thai_lekkao = 0x0df9,
- XK_Hangul = 0xff31,
- XK_Hangul_Start = 0xff32,
- XK_Hangul_End = 0xff33,
- XK_Hangul_Hanja = 0xff34,
- XK_Hangul_Jamo = 0xff35,
- XK_Hangul_Romaja = 0xff36,
- XK_Hangul_Codeinput = 0xff37,
- XK_Hangul_Jeonja = 0xff38,
- XK_Hangul_Banja = 0xff39,
- XK_Hangul_PreHanja = 0xff3a,
- XK_Hangul_PostHanja = 0xff3b,
- XK_Hangul_SingleCandidate = 0xff3c,
- XK_Hangul_MultipleCandidate = 0xff3d,
- XK_Hangul_PreviousCandidate = 0xff3e,
- XK_Hangul_Special = 0xff3f,
- XK_Hangul_switch = 0xff7e,
- XK_Hangul_Kiyeog = 0x0ea1,
- XK_Hangul_SsangKiyeog = 0x0ea2,
- XK_Hangul_KiyeogSios = 0x0ea3,
- XK_Hangul_Nieun = 0x0ea4,
- XK_Hangul_NieunJieuj = 0x0ea5,
- XK_Hangul_NieunHieuh = 0x0ea6,
- XK_Hangul_Dikeud = 0x0ea7,
- XK_Hangul_SsangDikeud = 0x0ea8,
- XK_Hangul_Rieul = 0x0ea9,
- XK_Hangul_RieulKiyeog = 0x0eaa,
- XK_Hangul_RieulMieum = 0x0eab,
- XK_Hangul_RieulPieub = 0x0eac,
- XK_Hangul_RieulSios = 0x0ead,
- XK_Hangul_RieulTieut = 0x0eae,
- XK_Hangul_RieulPhieuf = 0x0eaf,
- XK_Hangul_RieulHieuh = 0x0eb0,
- XK_Hangul_Mieum = 0x0eb1,
- XK_Hangul_Pieub = 0x0eb2,
- XK_Hangul_SsangPieub = 0x0eb3,
- XK_Hangul_PieubSios = 0x0eb4,
- XK_Hangul_Sios = 0x0eb5,
- XK_Hangul_SsangSios = 0x0eb6,
- XK_Hangul_Ieung = 0x0eb7,
- XK_Hangul_Jieuj = 0x0eb8,
- XK_Hangul_SsangJieuj = 0x0eb9,
- XK_Hangul_Cieuc = 0x0eba,
- XK_Hangul_Khieuq = 0x0ebb,
- XK_Hangul_Tieut = 0x0ebc,
- XK_Hangul_Phieuf = 0x0ebd,
- XK_Hangul_Hieuh = 0x0ebe,
- XK_Hangul_A = 0x0ebf,
- XK_Hangul_AE = 0x0ec0,
- XK_Hangul_YA = 0x0ec1,
- XK_Hangul_YAE = 0x0ec2,
- XK_Hangul_EO = 0x0ec3,
- XK_Hangul_E = 0x0ec4,
- XK_Hangul_YEO = 0x0ec5,
- XK_Hangul_YE = 0x0ec6,
- XK_Hangul_O = 0x0ec7,
- XK_Hangul_WA = 0x0ec8,
- XK_Hangul_WAE = 0x0ec9,
- XK_Hangul_OE = 0x0eca,
- XK_Hangul_YO = 0x0ecb,
- XK_Hangul_U = 0x0ecc,
- XK_Hangul_WEO = 0x0ecd,
- XK_Hangul_WE = 0x0ece,
- XK_Hangul_WI = 0x0ecf,
- XK_Hangul_YU = 0x0ed0,
- XK_Hangul_EU = 0x0ed1,
- XK_Hangul_YI = 0x0ed2,
- XK_Hangul_I = 0x0ed3,
- XK_Hangul_J_Kiyeog = 0x0ed4,
- XK_Hangul_J_SsangKiyeog = 0x0ed5,
- XK_Hangul_J_KiyeogSios = 0x0ed6,
- XK_Hangul_J_Nieun = 0x0ed7,
- XK_Hangul_J_NieunJieuj = 0x0ed8,
- XK_Hangul_J_NieunHieuh = 0x0ed9,
- XK_Hangul_J_Dikeud = 0x0eda,
- XK_Hangul_J_Rieul = 0x0edb,
- XK_Hangul_J_RieulKiyeog = 0x0edc,
- XK_Hangul_J_RieulMieum = 0x0edd,
- XK_Hangul_J_RieulPieub = 0x0ede,
- XK_Hangul_J_RieulSios = 0x0edf,
- XK_Hangul_J_RieulTieut = 0x0ee0,
- XK_Hangul_J_RieulPhieuf = 0x0ee1,
- XK_Hangul_J_RieulHieuh = 0x0ee2,
- XK_Hangul_J_Mieum = 0x0ee3,
- XK_Hangul_J_Pieub = 0x0ee4,
- XK_Hangul_J_PieubSios = 0x0ee5,
- XK_Hangul_J_Sios = 0x0ee6,
- XK_Hangul_J_SsangSios = 0x0ee7,
- XK_Hangul_J_Ieung = 0x0ee8,
- XK_Hangul_J_Jieuj = 0x0ee9,
- XK_Hangul_J_Cieuc = 0x0eea,
- XK_Hangul_J_Khieuq = 0x0eeb,
- XK_Hangul_J_Tieut = 0x0eec,
- XK_Hangul_J_Phieuf = 0x0eed,
- XK_Hangul_J_Hieuh = 0x0eee,
- XK_Hangul_RieulYeorinHieuh = 0x0eef,
- XK_Hangul_SunkyeongeumMieum = 0x0ef0,
- XK_Hangul_SunkyeongeumPieub = 0x0ef1,
- XK_Hangul_PanSios = 0x0ef2,
- XK_Hangul_KkogjiDalrinIeung = 0x0ef3,
- XK_Hangul_SunkyeongeumPhieuf = 0x0ef4,
- XK_Hangul_YeorinHieuh = 0x0ef5,
- XK_Hangul_AraeA = 0x0ef6,
- XK_Hangul_AraeAE = 0x0ef7,
- XK_Hangul_J_PanSios = 0x0ef8,
- XK_Hangul_J_KkogjiDalrinIeung = 0x0ef9,
- XK_Hangul_J_YeorinHieuh = 0x0efa,
- XK_Korean_Won = 0x0eff,
- XK_Armenian_ligature_ew = 0x1000587,
- XK_Armenian_full_stop = 0x1000589,
- XK_Armenian_verjaket = 0x1000589,
- XK_Armenian_separation_mark = 0x100055d,
- XK_Armenian_but = 0x100055d,
- XK_Armenian_hyphen = 0x100058a,
- XK_Armenian_yentamna = 0x100058a,
- XK_Armenian_exclam = 0x100055c,
- XK_Armenian_amanak = 0x100055c,
- XK_Armenian_accent = 0x100055b,
- XK_Armenian_shesht = 0x100055b,
- XK_Armenian_question = 0x100055e,
- XK_Armenian_paruyk = 0x100055e,
- XK_Armenian_AYB = 0x1000531,
- XK_Armenian_ayb = 0x1000561,
- XK_Armenian_BEN = 0x1000532,
- XK_Armenian_ben = 0x1000562,
- XK_Armenian_GIM = 0x1000533,
- XK_Armenian_gim = 0x1000563,
- XK_Armenian_DA = 0x1000534,
- XK_Armenian_da = 0x1000564,
- XK_Armenian_YECH = 0x1000535,
- XK_Armenian_yech = 0x1000565,
- XK_Armenian_ZA = 0x1000536,
- XK_Armenian_za = 0x1000566,
- XK_Armenian_E = 0x1000537,
- XK_Armenian_e = 0x1000567,
- XK_Armenian_AT = 0x1000538,
- XK_Armenian_at = 0x1000568,
- XK_Armenian_TO = 0x1000539,
- XK_Armenian_to = 0x1000569,
- XK_Armenian_ZHE = 0x100053a,
- XK_Armenian_zhe = 0x100056a,
- XK_Armenian_INI = 0x100053b,
- XK_Armenian_ini = 0x100056b,
- XK_Armenian_LYUN = 0x100053c,
- XK_Armenian_lyun = 0x100056c,
- XK_Armenian_KHE = 0x100053d,
- XK_Armenian_khe = 0x100056d,
- XK_Armenian_TSA = 0x100053e,
- XK_Armenian_tsa = 0x100056e,
- XK_Armenian_KEN = 0x100053f,
- XK_Armenian_ken = 0x100056f,
- XK_Armenian_HO = 0x1000540,
- XK_Armenian_ho = 0x1000570,
- XK_Armenian_DZA = 0x1000541,
- XK_Armenian_dza = 0x1000571,
- XK_Armenian_GHAT = 0x1000542,
- XK_Armenian_ghat = 0x1000572,
- XK_Armenian_TCHE = 0x1000543,
- XK_Armenian_tche = 0x1000573,
- XK_Armenian_MEN = 0x1000544,
- XK_Armenian_men = 0x1000574,
- XK_Armenian_HI = 0x1000545,
- XK_Armenian_hi = 0x1000575,
- XK_Armenian_NU = 0x1000546,
- XK_Armenian_nu = 0x1000576,
- XK_Armenian_SHA = 0x1000547,
- XK_Armenian_sha = 0x1000577,
- XK_Armenian_VO = 0x1000548,
- XK_Armenian_vo = 0x1000578,
- XK_Armenian_CHA = 0x1000549,
- XK_Armenian_cha = 0x1000579,
- XK_Armenian_PE = 0x100054a,
- XK_Armenian_pe = 0x100057a,
- XK_Armenian_JE = 0x100054b,
- XK_Armenian_je = 0x100057b,
- XK_Armenian_RA = 0x100054c,
- XK_Armenian_ra = 0x100057c,
- XK_Armenian_SE = 0x100054d,
- XK_Armenian_se = 0x100057d,
- XK_Armenian_VEV = 0x100054e,
- XK_Armenian_vev = 0x100057e,
- XK_Armenian_TYUN = 0x100054f,
- XK_Armenian_tyun = 0x100057f,
- XK_Armenian_RE = 0x1000550,
- XK_Armenian_re = 0x1000580,
- XK_Armenian_TSO = 0x1000551,
- XK_Armenian_tso = 0x1000581,
- XK_Armenian_VYUN = 0x1000552,
- XK_Armenian_vyun = 0x1000582,
- XK_Armenian_PYUR = 0x1000553,
- XK_Armenian_pyur = 0x1000583,
- XK_Armenian_KE = 0x1000554,
- XK_Armenian_ke = 0x1000584,
- XK_Armenian_O = 0x1000555,
- XK_Armenian_o = 0x1000585,
- XK_Armenian_FE = 0x1000556,
- XK_Armenian_fe = 0x1000586,
- XK_Armenian_apostrophe = 0x100055a,
- XK_Georgian_an = 0x10010d0,
- XK_Georgian_ban = 0x10010d1,
- XK_Georgian_gan = 0x10010d2,
- XK_Georgian_don = 0x10010d3,
- XK_Georgian_en = 0x10010d4,
- XK_Georgian_vin = 0x10010d5,
- XK_Georgian_zen = 0x10010d6,
- XK_Georgian_tan = 0x10010d7,
- XK_Georgian_in = 0x10010d8,
- XK_Georgian_kan = 0x10010d9,
- XK_Georgian_las = 0x10010da,
- XK_Georgian_man = 0x10010db,
- XK_Georgian_nar = 0x10010dc,
- XK_Georgian_on = 0x10010dd,
- XK_Georgian_par = 0x10010de,
- XK_Georgian_zhar = 0x10010df,
- XK_Georgian_rae = 0x10010e0,
- XK_Georgian_san = 0x10010e1,
- XK_Georgian_tar = 0x10010e2,
- XK_Georgian_un = 0x10010e3,
- XK_Georgian_phar = 0x10010e4,
- XK_Georgian_khar = 0x10010e5,
- XK_Georgian_ghan = 0x10010e6,
- XK_Georgian_qar = 0x10010e7,
- XK_Georgian_shin = 0x10010e8,
- XK_Georgian_chin = 0x10010e9,
- XK_Georgian_can = 0x10010ea,
- XK_Georgian_jil = 0x10010eb,
- XK_Georgian_cil = 0x10010ec,
- XK_Georgian_char = 0x10010ed,
- XK_Georgian_xan = 0x10010ee,
- XK_Georgian_jhan = 0x10010ef,
- XK_Georgian_hae = 0x10010f0,
- XK_Georgian_he = 0x10010f1,
- XK_Georgian_hie = 0x10010f2,
- XK_Georgian_we = 0x10010f3,
- XK_Georgian_har = 0x10010f4,
- XK_Georgian_hoe = 0x10010f5,
- XK_Georgian_fi = 0x10010f6,
- XK_Xabovedot = 0x1001e8a,
- XK_Ibreve = 0x100012c,
- XK_Zstroke = 0x10001b5,
- XK_Gcaron = 0x10001e6,
- XK_Ocaron = 0x10001d1,
- XK_Obarred = 0x100019f,
- XK_xabovedot = 0x1001e8b,
- XK_ibreve = 0x100012d,
- XK_zstroke = 0x10001b6,
- XK_gcaron = 0x10001e7,
- XK_ocaron = 0x10001d2,
- XK_obarred = 0x1000275,
- XK_SCHWA = 0x100018f,
- XK_schwa = 0x1000259,
- XK_EZH = 0x10001b7,
- XK_ezh = 0x1000292,
- XK_Lbelowdot = 0x1001e36,
- XK_lbelowdot = 0x1001e37,
- XK_Abelowdot = 0x1001ea0,
- XK_abelowdot = 0x1001ea1,
- XK_Ahook = 0x1001ea2,
- XK_ahook = 0x1001ea3,
- XK_Acircumflexacute = 0x1001ea4,
- XK_acircumflexacute = 0x1001ea5,
- XK_Acircumflexgrave = 0x1001ea6,
- XK_acircumflexgrave = 0x1001ea7,
- XK_Acircumflexhook = 0x1001ea8,
- XK_acircumflexhook = 0x1001ea9,
- XK_Acircumflextilde = 0x1001eaa,
- XK_acircumflextilde = 0x1001eab,
- XK_Acircumflexbelowdot = 0x1001eac,
- XK_acircumflexbelowdot = 0x1001ead,
- XK_Abreveacute = 0x1001eae,
- XK_abreveacute = 0x1001eaf,
- XK_Abrevegrave = 0x1001eb0,
- XK_abrevegrave = 0x1001eb1,
- XK_Abrevehook = 0x1001eb2,
- XK_abrevehook = 0x1001eb3,
- XK_Abrevetilde = 0x1001eb4,
- XK_abrevetilde = 0x1001eb5,
- XK_Abrevebelowdot = 0x1001eb6,
- XK_abrevebelowdot = 0x1001eb7,
- XK_Ebelowdot = 0x1001eb8,
- XK_ebelowdot = 0x1001eb9,
- XK_Ehook = 0x1001eba,
- XK_ehook = 0x1001ebb,
- XK_Etilde = 0x1001ebc,
- XK_etilde = 0x1001ebd,
- XK_Ecircumflexacute = 0x1001ebe,
- XK_ecircumflexacute = 0x1001ebf,
- XK_Ecircumflexgrave = 0x1001ec0,
- XK_ecircumflexgrave = 0x1001ec1,
- XK_Ecircumflexhook = 0x1001ec2,
- XK_ecircumflexhook = 0x1001ec3,
- XK_Ecircumflextilde = 0x1001ec4,
- XK_ecircumflextilde = 0x1001ec5,
- XK_Ecircumflexbelowdot = 0x1001ec6,
- XK_ecircumflexbelowdot = 0x1001ec7,
- XK_Ihook = 0x1001ec8,
- XK_ihook = 0x1001ec9,
- XK_Ibelowdot = 0x1001eca,
- XK_ibelowdot = 0x1001ecb,
- XK_Obelowdot = 0x1001ecc,
- XK_obelowdot = 0x1001ecd,
- XK_Ohook = 0x1001ece,
- XK_ohook = 0x1001ecf,
- XK_Ocircumflexacute = 0x1001ed0,
- XK_ocircumflexacute = 0x1001ed1,
- XK_Ocircumflexgrave = 0x1001ed2,
- XK_ocircumflexgrave = 0x1001ed3,
- XK_Ocircumflexhook = 0x1001ed4,
- XK_ocircumflexhook = 0x1001ed5,
- XK_Ocircumflextilde = 0x1001ed6,
- XK_ocircumflextilde = 0x1001ed7,
- XK_Ocircumflexbelowdot = 0x1001ed8,
- XK_ocircumflexbelowdot = 0x1001ed9,
- XK_Ohornacute = 0x1001eda,
- XK_ohornacute = 0x1001edb,
- XK_Ohorngrave = 0x1001edc,
- XK_ohorngrave = 0x1001edd,
- XK_Ohornhook = 0x1001ede,
- XK_ohornhook = 0x1001edf,
- XK_Ohorntilde = 0x1001ee0,
- XK_ohorntilde = 0x1001ee1,
- XK_Ohornbelowdot = 0x1001ee2,
- XK_ohornbelowdot = 0x1001ee3,
- XK_Ubelowdot = 0x1001ee4,
- XK_ubelowdot = 0x1001ee5,
- XK_Uhook = 0x1001ee6,
- XK_uhook = 0x1001ee7,
- XK_Uhornacute = 0x1001ee8,
- XK_uhornacute = 0x1001ee9,
- XK_Uhorngrave = 0x1001eea,
- XK_uhorngrave = 0x1001eeb,
- XK_Uhornhook = 0x1001eec,
- XK_uhornhook = 0x1001eed,
- XK_Uhorntilde = 0x1001eee,
- XK_uhorntilde = 0x1001eef,
- XK_Uhornbelowdot = 0x1001ef0,
- XK_uhornbelowdot = 0x1001ef1,
- XK_Ybelowdot = 0x1001ef4,
- XK_ybelowdot = 0x1001ef5,
- XK_Yhook = 0x1001ef6,
- XK_yhook = 0x1001ef7,
- XK_Ytilde = 0x1001ef8,
- XK_ytilde = 0x1001ef9,
- XK_Ohorn = 0x10001a0,
- XK_ohorn = 0x10001a1,
- XK_Uhorn = 0x10001af,
- XK_uhorn = 0x10001b0,
- XK_EcuSign = 0x10020a0,
- XK_ColonSign = 0x10020a1,
- XK_CruzeiroSign = 0x10020a2,
- XK_FFrancSign = 0x10020a3,
- XK_LiraSign = 0x10020a4,
- XK_MillSign = 0x10020a5,
- XK_NairaSign = 0x10020a6,
- XK_PesetaSign = 0x10020a7,
- XK_RupeeSign = 0x10020a8,
- XK_WonSign = 0x10020a9,
- XK_NewSheqelSign = 0x10020aa,
- XK_DongSign = 0x10020ab,
- XK_EuroSign = 0x20ac,
- XK_zerosuperior = 0x1002070,
- XK_foursuperior = 0x1002074,
- XK_fivesuperior = 0x1002075,
- XK_sixsuperior = 0x1002076,
- XK_sevensuperior = 0x1002077,
- XK_eightsuperior = 0x1002078,
- XK_ninesuperior = 0x1002079,
- XK_zerosubscript = 0x1002080,
- XK_onesubscript = 0x1002081,
- XK_twosubscript = 0x1002082,
- XK_threesubscript = 0x1002083,
- XK_foursubscript = 0x1002084,
- XK_fivesubscript = 0x1002085,
- XK_sixsubscript = 0x1002086,
- XK_sevensubscript = 0x1002087,
- XK_eightsubscript = 0x1002088,
- XK_ninesubscript = 0x1002089,
- XK_partdifferential = 0x1002202,
- XK_emptyset = 0x1002205,
- XK_elementof = 0x1002208,
- XK_notelementof = 0x1002209,
- XK_containsas = 0x100220B,
- XK_squareroot = 0x100221A,
- XK_cuberoot = 0x100221B,
- XK_fourthroot = 0x100221C,
- XK_dintegral = 0x100222C,
- XK_tintegral = 0x100222D,
- XK_because = 0x1002235,
- XK_approxeq = 0x1002248,
- XK_notapproxeq = 0x1002247,
- XK_notidentical = 0x1002262,
- XK_stricteq = 0x1002263,
- XK_braille_dot_1 = 0xfff1,
- XK_braille_dot_2 = 0xfff2,
- XK_braille_dot_3 = 0xfff3,
- XK_braille_dot_4 = 0xfff4,
- XK_braille_dot_5 = 0xfff5,
- XK_braille_dot_6 = 0xfff6,
- XK_braille_dot_7 = 0xfff7,
- XK_braille_dot_8 = 0xfff8,
- XK_braille_dot_9 = 0xfff9,
- XK_braille_dot_10 = 0xfffa,
- XK_braille_blank = 0x1002800,
- XK_braille_dots_1 = 0x1002801,
- XK_braille_dots_2 = 0x1002802,
- XK_braille_dots_12 = 0x1002803,
- XK_braille_dots_3 = 0x1002804,
- XK_braille_dots_13 = 0x1002805,
- XK_braille_dots_23 = 0x1002806,
- XK_braille_dots_123 = 0x1002807,
- XK_braille_dots_4 = 0x1002808,
- XK_braille_dots_14 = 0x1002809,
- XK_braille_dots_24 = 0x100280a,
- XK_braille_dots_124 = 0x100280b,
- XK_braille_dots_34 = 0x100280c,
- XK_braille_dots_134 = 0x100280d,
- XK_braille_dots_234 = 0x100280e,
- XK_braille_dots_1234 = 0x100280f,
- XK_braille_dots_5 = 0x1002810,
- XK_braille_dots_15 = 0x1002811,
- XK_braille_dots_25 = 0x1002812,
- XK_braille_dots_125 = 0x1002813,
- XK_braille_dots_35 = 0x1002814,
- XK_braille_dots_135 = 0x1002815,
- XK_braille_dots_235 = 0x1002816,
- XK_braille_dots_1235 = 0x1002817,
- XK_braille_dots_45 = 0x1002818,
- XK_braille_dots_145 = 0x1002819,
- XK_braille_dots_245 = 0x100281a,
- XK_braille_dots_1245 = 0x100281b,
- XK_braille_dots_345 = 0x100281c,
- XK_braille_dots_1345 = 0x100281d,
- XK_braille_dots_2345 = 0x100281e,
- XK_braille_dots_12345 = 0x100281f,
- XK_braille_dots_6 = 0x1002820,
- XK_braille_dots_16 = 0x1002821,
- XK_braille_dots_26 = 0x1002822,
- XK_braille_dots_126 = 0x1002823,
- XK_braille_dots_36 = 0x1002824,
- XK_braille_dots_136 = 0x1002825,
- XK_braille_dots_236 = 0x1002826,
- XK_braille_dots_1236 = 0x1002827,
- XK_braille_dots_46 = 0x1002828,
- XK_braille_dots_146 = 0x1002829,
- XK_braille_dots_246 = 0x100282a,
- XK_braille_dots_1246 = 0x100282b,
- XK_braille_dots_346 = 0x100282c,
- XK_braille_dots_1346 = 0x100282d,
- XK_braille_dots_2346 = 0x100282e,
- XK_braille_dots_12346 = 0x100282f,
- XK_braille_dots_56 = 0x1002830,
- XK_braille_dots_156 = 0x1002831,
- XK_braille_dots_256 = 0x1002832,
- XK_braille_dots_1256 = 0x1002833,
- XK_braille_dots_356 = 0x1002834,
- XK_braille_dots_1356 = 0x1002835,
- XK_braille_dots_2356 = 0x1002836,
- XK_braille_dots_12356 = 0x1002837,
- XK_braille_dots_456 = 0x1002838,
- XK_braille_dots_1456 = 0x1002839,
- XK_braille_dots_2456 = 0x100283a,
- XK_braille_dots_12456 = 0x100283b,
- XK_braille_dots_3456 = 0x100283c,
- XK_braille_dots_13456 = 0x100283d,
- XK_braille_dots_23456 = 0x100283e,
- XK_braille_dots_123456 = 0x100283f,
- XK_braille_dots_7 = 0x1002840,
- XK_braille_dots_17 = 0x1002841,
- XK_braille_dots_27 = 0x1002842,
- XK_braille_dots_127 = 0x1002843,
- XK_braille_dots_37 = 0x1002844,
- XK_braille_dots_137 = 0x1002845,
- XK_braille_dots_237 = 0x1002846,
- XK_braille_dots_1237 = 0x1002847,
- XK_braille_dots_47 = 0x1002848,
- XK_braille_dots_147 = 0x1002849,
- XK_braille_dots_247 = 0x100284a,
- XK_braille_dots_1247 = 0x100284b,
- XK_braille_dots_347 = 0x100284c,
- XK_braille_dots_1347 = 0x100284d,
- XK_braille_dots_2347 = 0x100284e,
- XK_braille_dots_12347 = 0x100284f,
- XK_braille_dots_57 = 0x1002850,
- XK_braille_dots_157 = 0x1002851,
- XK_braille_dots_257 = 0x1002852,
- XK_braille_dots_1257 = 0x1002853,
- XK_braille_dots_357 = 0x1002854,
- XK_braille_dots_1357 = 0x1002855,
- XK_braille_dots_2357 = 0x1002856,
- XK_braille_dots_12357 = 0x1002857,
- XK_braille_dots_457 = 0x1002858,
- XK_braille_dots_1457 = 0x1002859,
- XK_braille_dots_2457 = 0x100285a,
- XK_braille_dots_12457 = 0x100285b,
- XK_braille_dots_3457 = 0x100285c,
- XK_braille_dots_13457 = 0x100285d,
- XK_braille_dots_23457 = 0x100285e,
- XK_braille_dots_123457 = 0x100285f,
- XK_braille_dots_67 = 0x1002860,
- XK_braille_dots_167 = 0x1002861,
- XK_braille_dots_267 = 0x1002862,
- XK_braille_dots_1267 = 0x1002863,
- XK_braille_dots_367 = 0x1002864,
- XK_braille_dots_1367 = 0x1002865,
- XK_braille_dots_2367 = 0x1002866,
- XK_braille_dots_12367 = 0x1002867,
- XK_braille_dots_467 = 0x1002868,
- XK_braille_dots_1467 = 0x1002869,
- XK_braille_dots_2467 = 0x100286a,
- XK_braille_dots_12467 = 0x100286b,
- XK_braille_dots_3467 = 0x100286c,
- XK_braille_dots_13467 = 0x100286d,
- XK_braille_dots_23467 = 0x100286e,
- XK_braille_dots_123467 = 0x100286f,
- XK_braille_dots_567 = 0x1002870,
- XK_braille_dots_1567 = 0x1002871,
- XK_braille_dots_2567 = 0x1002872,
- XK_braille_dots_12567 = 0x1002873,
- XK_braille_dots_3567 = 0x1002874,
- XK_braille_dots_13567 = 0x1002875,
- XK_braille_dots_23567 = 0x1002876,
- XK_braille_dots_123567 = 0x1002877,
- XK_braille_dots_4567 = 0x1002878,
- XK_braille_dots_14567 = 0x1002879,
- XK_braille_dots_24567 = 0x100287a,
- XK_braille_dots_124567 = 0x100287b,
- XK_braille_dots_34567 = 0x100287c,
- XK_braille_dots_134567 = 0x100287d,
- XK_braille_dots_234567 = 0x100287e,
- XK_braille_dots_1234567 = 0x100287f,
- XK_braille_dots_8 = 0x1002880,
- XK_braille_dots_18 = 0x1002881,
- XK_braille_dots_28 = 0x1002882,
- XK_braille_dots_128 = 0x1002883,
- XK_braille_dots_38 = 0x1002884,
- XK_braille_dots_138 = 0x1002885,
- XK_braille_dots_238 = 0x1002886,
- XK_braille_dots_1238 = 0x1002887,
- XK_braille_dots_48 = 0x1002888,
- XK_braille_dots_148 = 0x1002889,
- XK_braille_dots_248 = 0x100288a,
- XK_braille_dots_1248 = 0x100288b,
- XK_braille_dots_348 = 0x100288c,
- XK_braille_dots_1348 = 0x100288d,
- XK_braille_dots_2348 = 0x100288e,
- XK_braille_dots_12348 = 0x100288f,
- XK_braille_dots_58 = 0x1002890,
- XK_braille_dots_158 = 0x1002891,
- XK_braille_dots_258 = 0x1002892,
- XK_braille_dots_1258 = 0x1002893,
- XK_braille_dots_358 = 0x1002894,
- XK_braille_dots_1358 = 0x1002895,
- XK_braille_dots_2358 = 0x1002896,
- XK_braille_dots_12358 = 0x1002897,
- XK_braille_dots_458 = 0x1002898,
- XK_braille_dots_1458 = 0x1002899,
- XK_braille_dots_2458 = 0x100289a,
- XK_braille_dots_12458 = 0x100289b,
- XK_braille_dots_3458 = 0x100289c,
- XK_braille_dots_13458 = 0x100289d,
- XK_braille_dots_23458 = 0x100289e,
- XK_braille_dots_123458 = 0x100289f,
- XK_braille_dots_68 = 0x10028a0,
- XK_braille_dots_168 = 0x10028a1,
- XK_braille_dots_268 = 0x10028a2,
- XK_braille_dots_1268 = 0x10028a3,
- XK_braille_dots_368 = 0x10028a4,
- XK_braille_dots_1368 = 0x10028a5,
- XK_braille_dots_2368 = 0x10028a6,
- XK_braille_dots_12368 = 0x10028a7,
- XK_braille_dots_468 = 0x10028a8,
- XK_braille_dots_1468 = 0x10028a9,
- XK_braille_dots_2468 = 0x10028aa,
- XK_braille_dots_12468 = 0x10028ab,
- XK_braille_dots_3468 = 0x10028ac,
- XK_braille_dots_13468 = 0x10028ad,
- XK_braille_dots_23468 = 0x10028ae,
- XK_braille_dots_123468 = 0x10028af,
- XK_braille_dots_568 = 0x10028b0,
- XK_braille_dots_1568 = 0x10028b1,
- XK_braille_dots_2568 = 0x10028b2,
- XK_braille_dots_12568 = 0x10028b3,
- XK_braille_dots_3568 = 0x10028b4,
- XK_braille_dots_13568 = 0x10028b5,
- XK_braille_dots_23568 = 0x10028b6,
- XK_braille_dots_123568 = 0x10028b7,
- XK_braille_dots_4568 = 0x10028b8,
- XK_braille_dots_14568 = 0x10028b9,
- XK_braille_dots_24568 = 0x10028ba,
- XK_braille_dots_124568 = 0x10028bb,
- XK_braille_dots_34568 = 0x10028bc,
- XK_braille_dots_134568 = 0x10028bd,
- XK_braille_dots_234568 = 0x10028be,
- XK_braille_dots_1234568 = 0x10028bf,
- XK_braille_dots_78 = 0x10028c0,
- XK_braille_dots_178 = 0x10028c1,
- XK_braille_dots_278 = 0x10028c2,
- XK_braille_dots_1278 = 0x10028c3,
- XK_braille_dots_378 = 0x10028c4,
- XK_braille_dots_1378 = 0x10028c5,
- XK_braille_dots_2378 = 0x10028c6,
- XK_braille_dots_12378 = 0x10028c7,
- XK_braille_dots_478 = 0x10028c8,
- XK_braille_dots_1478 = 0x10028c9,
- XK_braille_dots_2478 = 0x10028ca,
- XK_braille_dots_12478 = 0x10028cb,
- XK_braille_dots_3478 = 0x10028cc,
- XK_braille_dots_13478 = 0x10028cd,
- XK_braille_dots_23478 = 0x10028ce,
- XK_braille_dots_123478 = 0x10028cf,
- XK_braille_dots_578 = 0x10028d0,
- XK_braille_dots_1578 = 0x10028d1,
- XK_braille_dots_2578 = 0x10028d2,
- XK_braille_dots_12578 = 0x10028d3,
- XK_braille_dots_3578 = 0x10028d4,
- XK_braille_dots_13578 = 0x10028d5,
- XK_braille_dots_23578 = 0x10028d6,
- XK_braille_dots_123578 = 0x10028d7,
- XK_braille_dots_4578 = 0x10028d8,
- XK_braille_dots_14578 = 0x10028d9,
- XK_braille_dots_24578 = 0x10028da,
- XK_braille_dots_124578 = 0x10028db,
- XK_braille_dots_34578 = 0x10028dc,
- XK_braille_dots_134578 = 0x10028dd,
- XK_braille_dots_234578 = 0x10028de,
- XK_braille_dots_1234578 = 0x10028df,
- XK_braille_dots_678 = 0x10028e0,
- XK_braille_dots_1678 = 0x10028e1,
- XK_braille_dots_2678 = 0x10028e2,
- XK_braille_dots_12678 = 0x10028e3,
- XK_braille_dots_3678 = 0x10028e4,
- XK_braille_dots_13678 = 0x10028e5,
- XK_braille_dots_23678 = 0x10028e6,
- XK_braille_dots_123678 = 0x10028e7,
- XK_braille_dots_4678 = 0x10028e8,
- XK_braille_dots_14678 = 0x10028e9,
- XK_braille_dots_24678 = 0x10028ea,
- XK_braille_dots_124678 = 0x10028eb,
- XK_braille_dots_34678 = 0x10028ec,
- XK_braille_dots_134678 = 0x10028ed,
- XK_braille_dots_234678 = 0x10028ee,
- XK_braille_dots_1234678 = 0x10028ef,
- XK_braille_dots_5678 = 0x10028f0,
- XK_braille_dots_15678 = 0x10028f1,
- XK_braille_dots_25678 = 0x10028f2,
- XK_braille_dots_125678 = 0x10028f3,
- XK_braille_dots_35678 = 0x10028f4,
- XK_braille_dots_135678 = 0x10028f5,
- XK_braille_dots_235678 = 0x10028f6,
- XK_braille_dots_1235678 = 0x10028f7,
- XK_braille_dots_45678 = 0x10028f8,
- XK_braille_dots_145678 = 0x10028f9,
- XK_braille_dots_245678 = 0x10028fa,
- XK_braille_dots_1245678 = 0x10028fb,
- XK_braille_dots_345678 = 0x10028fc,
- XK_braille_dots_1345678 = 0x10028fd,
- XK_braille_dots_2345678 = 0x10028fe,
- XK_braille_dots_12345678 = 0x10028ff,
- XK_Sinh_ng = 0x1000d82,
- XK_Sinh_h2 = 0x1000d83,
- XK_Sinh_a = 0x1000d85,
- XK_Sinh_aa = 0x1000d86,
- XK_Sinh_ae = 0x1000d87,
- XK_Sinh_aee = 0x1000d88,
- XK_Sinh_i = 0x1000d89,
- XK_Sinh_ii = 0x1000d8a,
- XK_Sinh_u = 0x1000d8b,
- XK_Sinh_uu = 0x1000d8c,
- XK_Sinh_ri = 0x1000d8d,
- XK_Sinh_rii = 0x1000d8e,
- XK_Sinh_lu = 0x1000d8f,
- XK_Sinh_luu = 0x1000d90,
- XK_Sinh_e = 0x1000d91,
- XK_Sinh_ee = 0x1000d92,
- XK_Sinh_ai = 0x1000d93,
- XK_Sinh_o = 0x1000d94,
- XK_Sinh_oo = 0x1000d95,
- XK_Sinh_au = 0x1000d96,
- XK_Sinh_ka = 0x1000d9a,
- XK_Sinh_kha = 0x1000d9b,
- XK_Sinh_ga = 0x1000d9c,
- XK_Sinh_gha = 0x1000d9d,
- XK_Sinh_ng2 = 0x1000d9e,
- XK_Sinh_nga = 0x1000d9f,
- XK_Sinh_ca = 0x1000da0,
- XK_Sinh_cha = 0x1000da1,
- XK_Sinh_ja = 0x1000da2,
- XK_Sinh_jha = 0x1000da3,
- XK_Sinh_nya = 0x1000da4,
- XK_Sinh_jnya = 0x1000da5,
- XK_Sinh_nja = 0x1000da6,
- XK_Sinh_tta = 0x1000da7,
- XK_Sinh_ttha = 0x1000da8,
- XK_Sinh_dda = 0x1000da9,
- XK_Sinh_ddha = 0x1000daa,
- XK_Sinh_nna = 0x1000dab,
- XK_Sinh_ndda = 0x1000dac,
- XK_Sinh_tha = 0x1000dad,
- XK_Sinh_thha = 0x1000dae,
- XK_Sinh_dha = 0x1000daf,
- XK_Sinh_dhha = 0x1000db0,
- XK_Sinh_na = 0x1000db1,
- XK_Sinh_ndha = 0x1000db3,
- XK_Sinh_pa = 0x1000db4,
- XK_Sinh_pha = 0x1000db5,
- XK_Sinh_ba = 0x1000db6,
- XK_Sinh_bha = 0x1000db7,
- XK_Sinh_ma = 0x1000db8,
- XK_Sinh_mba = 0x1000db9,
- XK_Sinh_ya = 0x1000dba,
- XK_Sinh_ra = 0x1000dbb,
- XK_Sinh_la = 0x1000dbd,
- XK_Sinh_va = 0x1000dc0,
- XK_Sinh_sha = 0x1000dc1,
- XK_Sinh_ssha = 0x1000dc2,
- XK_Sinh_sa = 0x1000dc3,
- XK_Sinh_ha = 0x1000dc4,
- XK_Sinh_lla = 0x1000dc5,
- XK_Sinh_fa = 0x1000dc6,
- XK_Sinh_al = 0x1000dca,
- XK_Sinh_aa2 = 0x1000dcf,
- XK_Sinh_ae2 = 0x1000dd0,
- XK_Sinh_aee2 = 0x1000dd1,
- XK_Sinh_i2 = 0x1000dd2,
- XK_Sinh_ii2 = 0x1000dd3,
- XK_Sinh_u2 = 0x1000dd4,
- XK_Sinh_uu2 = 0x1000dd6,
- XK_Sinh_ru2 = 0x1000dd8,
- XK_Sinh_e2 = 0x1000dd9,
- XK_Sinh_ee2 = 0x1000dda,
- XK_Sinh_ai2 = 0x1000ddb,
- XK_Sinh_o2 = 0x1000ddc,
- XK_Sinh_oo2 = 0x1000ddd,
- XK_Sinh_au2 = 0x1000dde,
- XK_Sinh_lu2 = 0x1000ddf,
- XK_Sinh_ruu2 = 0x1000df2,
- XK_Sinh_luu2 = 0x1000df3,
- XK_Sinh_kunddaliya = 0x1000df4,
- }
-}
+++ /dev/null
-//
-// XLibBackend.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
-//
-// Copyright (c) 2013-2017 Jean-Philippe Bruyère
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-using System;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-
-namespace Crow.XLib
-{
- public class XLibBackend : IBackend
- {
- #region pinvoke
- [DllImport("X11")]
- static extern int XInitThreads();
- [DllImport("X11")]
- internal static extern IntPtr XOpenDisplay(IntPtr displayName);
- [DllImport("X11")]
- internal static extern IntPtr XCloseDisplay(IntPtr disp);
- [DllImport("X11")]
- static extern Int32 XDefaultScreen(IntPtr disp);
- [DllImport("X11")]
- static extern IntPtr XDefaultRootWindow(IntPtr disp);
- [DllImport("X11")]
- static extern UInt32 XDefaultDepth (IntPtr disp, Int32 screen);
- [DllImport("X11")]
- static extern IntPtr XDefaultVisual(IntPtr disp, Int32 screen);
- [DllImport("X11")]
- static extern IntPtr XCreateSimpleWindow(IntPtr disp, IntPtr rootWindow, Int32 x, Int32 y, UInt32 width, UInt32 height,
- UInt32 borderWidth, IntPtr border, IntPtr background);
- [DllImport("X11")]
- static extern IntPtr XCreatePixmap(IntPtr disp, IntPtr rootWindow, UInt32 width, UInt32 height, UInt32 depth);
- [DllImport("X11")]
- static extern IntPtr XFreePixmap(IntPtr disp, IntPtr pixmap);
- [DllImport("X11")]
- static extern IntPtr XFree(IntPtr data);
- [DllImport("X11")]
- static extern Int32 XSelectInput(IntPtr disp, IntPtr win, EventMask eventMask);
- [DllImport("X11")]
- static extern Int32 XMapWindow(IntPtr disp, IntPtr win);
- [DllImport("X11")]
- static extern int XPending (IntPtr disp);
- [DllImport("X11")]
- static extern IntPtr XNextEvent(IntPtr disp, ref XEvent xevent);
- [DllImport("X11")]
- static extern Int32 XSync(IntPtr disp, int discard);
- [DllImport("X11")]
- static extern int XConnectionNumber(IntPtr disp);
- [DllImport("X11")]
- static extern IntPtr XSetErrorHandler(XErrorHandler error_handler);
- [DllImport ("X11")]
- static extern int XDefineCursor (IntPtr disp, IntPtr wnd, IntPtr cursor);
-
- [DllImport ("X11")]
- static extern uint XWarpPointer (IntPtr disp, IntPtr src_w, IntPtr dest_w, int src_x, int src_y, uint src_width, uint src_height, int dest_x, int dest_y);
-
- [DllImport ("libXcursor.so.1")]
- static extern int XcursorGetDefaultSize (IntPtr dpy);
- [DllImport ("libXcursor.so.1")]
- static extern string XcursorGetTheme (IntPtr dpy);
- [DllImport ("libXcursor.so.1")]
- static extern IntPtr XcursorLibraryLoadImage (string name, string theme, int size);
- [DllImport ("libXcursor.so.1")]
- static extern void XcursorImageDestroy (IntPtr image);
-
- [DllImport ("libXcursor.so.1")]
- static extern IntPtr XcursorImageLoadCursor (IntPtr dpy, IntPtr image);
- [DllImport ("X11-xcb")]
- static extern IntPtr XGetXCBConnection (IntPtr dpy);
- #endregion
-
- IntPtr xDisp, xwinHnd, xDefaultRootWin, xDefaultVisual;
- UInt32 xDefaultDepth;
- Int32 xScreen;
- XErrorHandler errorHnd;
-
- Interface iFace;
- XKB.XCBKeyboard Keyboard;
-
- IntPtr [] cursors = new IntPtr [(int)MouseCursors.MaxEnum];
-
- #region IBackend implementation
-
- public void Init (Interface _iFace)
- {
- iFace = _iFace;
- XInitThreads ();
- xDisp = XOpenDisplay(IntPtr.Zero);
- if (xDisp == IntPtr.Zero)
- throw new NotSupportedException("[XLib] Failed to open display.");
-
- IntPtr xcbCon = XGetXCBConnection (xDisp);
- Keyboard = new XKB.XCBKeyboard (xcbCon, iFace);
-
- xScreen = XDefaultScreen(xDisp);
-
- xDefaultRootWin = XDefaultRootWindow (xDisp);
- xDefaultVisual = XDefaultVisual (xDisp, xScreen);
- xDefaultDepth = XDefaultDepth (xDisp, xScreen);
-
- xwinHnd = XCreateSimpleWindow (xDisp, xDefaultRootWin,
- 0, 0, (uint)iFace.ClientRectangle.Width, (uint)iFace.ClientRectangle.Height, 0, IntPtr.Zero, IntPtr.Zero);
- if (xwinHnd == IntPtr.Zero)
- throw new NotSupportedException("[XLib] Failed to create window.");
-
- XSelectInput (xDisp, xwinHnd, EventMask.ExposureMask |
- EventMask.KeyPressMask | EventMask.KeyReleaseMask |
- EventMask.PointerMotionMask | EventMask.ButtonPressMask | EventMask.ButtonReleaseMask);
-
- XMapWindow (xDisp, xwinHnd);
-
- //keyboard = new Crow.XLib.X11Keyboard (xDisp);
-
- iFace.surf = new Crow.Cairo.XlibSurface (xDisp, xwinHnd, xDefaultVisual, iFace.ClientRectangle.Width, iFace.ClientRectangle.Height);
-
- errorHnd = new XErrorHandler (HandleError);
- XSetErrorHandler (errorHnd);
-
- loadCursors ();
- }
-
- public void CleanUp ()
- {
- Keyboard.Destroy ();
-
- XCloseDisplay (xDisp);
- }
- public void Flush () {
- XSync (xDisp, 0);
- }
- public void ProcessEvents ()
- {
- if (XPending (xDisp) > 0) {
- XEvent xevent = new XEvent ();
- XNextEvent (xDisp, ref xevent);
-
- switch (xevent.type) {
- case XEventName.Expose:
- iFace.ProcessResize (new Rectangle (0, 0, xevent.ExposeEvent.width, xevent.ExposeEvent.height));
- break;
- case XEventName.KeyPress:
- Keyboard.HandleEvent ((uint)xevent.KeyEvent.keycode, true);
- break;
- case XEventName.KeyRelease:
- Keyboard.HandleEvent ((uint)xevent.KeyEvent.keycode, false);
- break;
- case XEventName.MotionNotify:
- //Debug.WriteLine ("motion: ({0},{1})", xevent.MotionEvent.x, xevent.MotionEvent.y);
- iFace.ProcessMouseMove (xevent.MotionEvent.x, xevent.MotionEvent.y);
- break;
- case XEventName.ButtonPress:
- //Debug.WriteLine ("button press: {0}", xevent.ButtonEvent.button);
- if (xevent.ButtonEvent.button == 4)
- iFace.ProcessMouseWheelChanged (Interface.WheelIncrement);
- else if(xevent.ButtonEvent.button == 5)
- iFace.ProcessMouseWheelChanged (-Interface.WheelIncrement);
- else
- iFace.ProcessMouseButtonDown ((MouseButton)(xevent.ButtonEvent.button - 1));
- break;
- case XEventName.ButtonRelease:
- //Debug.WriteLine ("button release: {0}", xevent.ButtonEvent.button);
- iFace.ProcessMouseButtonUp ((MouseButton)(xevent.ButtonEvent.button - 1));
- break;
-
- }
- }
- }
- public bool IsDown (Key key)
- {
- return false;
- }
- public bool Shift {
- get { return Keyboard.Shift; }
- }
- public bool Ctrl {
- get { return Keyboard.Ctrl; }
- }
- public bool Alt {
- get { return Keyboard.Alt; }
- }
- public void SetCursor (MouseCursors newCur)
- {
- XDefineCursor (xDisp, xwinHnd, cursors[(int)newCur]);
- XSync (xDisp, 0);
- }
- public void SetCursorPosition (int x, int y)
- {
- XWarpPointer (xDisp, IntPtr.Zero, xwinHnd, 0, 0, 0, 0, x, y);
- }
- #endregion
-
- void loadCursor (MouseCursors id, string name)
- {
- IntPtr img = XcursorLibraryLoadImage (name, null, XcursorGetDefaultSize (xDisp));
- cursors[(int)id] = XcursorImageLoadCursor (xDisp, img);
- XcursorImageDestroy (img);
- }
-
- void loadCursors ()
- {
- loadCursor (MouseCursors.Default, "default");
- loadCursor (MouseCursors.Cross, "cross");
- loadCursor (MouseCursors.Arrow, "arrow");
- loadCursor (MouseCursors.Text, "text");
- loadCursor (MouseCursors.SW, "bottom_left_corner");
- loadCursor (MouseCursors.SE, "bottom_right_corner");
- loadCursor (MouseCursors.NW, "top_left_corner");
- loadCursor (MouseCursors.NE, "top_right_corner");
- loadCursor (MouseCursors.N, "top_side");
- loadCursor (MouseCursors.S, "bottom_side");
- loadCursor (MouseCursors.V, "size_ver");
- loadCursor (MouseCursors.H, "size_hor");
- }
-
- int HandleError (IntPtr display, ref XErrorEvent error_event)
- {
- /*if (ErrorExceptions)
- throw new X11Exception (error_event.display, error_event.resourceid,
- error_event.serial, error_event.error_code,
- error_event.request_code, error_event.minor_code);
- else
- Console.WriteLine ("X11 Error encountered: {0}{1}\n",
- X11Exception.GetMessage(error_event.display, error_event.resourceid,
- error_event.serial, error_event.error_code,
- error_event.request_code, error_event.minor_code),
- WhereString());*/
- Debug.WriteLine ("XERROR {0}", error_event.error_code);
- return 0;
- }
-
-
- }
-}
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
using System.Linq;
namespace Crow
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using Crow.Cairo;
+using vkvg;
#if DEBUG_LOG
namespace Crow
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
-using Crow.Cairo;
+using vkvg;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
-//Copyright GPL2
-using Crow.Cairo;
+//Copyright GPL2
+using vkvg;
namespace Rsvg {
[DllImport("rsvg-2")]
static extern void rsvg_handle_render_cairo_sub(IntPtr raw, IntPtr cr, string id);
- public void RenderCairoSub(Crow.Cairo.Context cr, string id) {
+ public void RenderCairoSub(Context cr, string id) {
rsvg_handle_render_cairo_sub(Raw, cr == null ? IntPtr.Zero : cr.Handle, id);
}
--- /dev/null
+//
+// Context.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2018 jp
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Text;
+using Crow;
+
+namespace vkvg
+{
+ public class Context: IDisposable
+ {
+
+ IntPtr handle = IntPtr.Zero;
+
+ public Context (Surface surf)
+ {
+ handle = NativeMethods.vkvg_create (surf.Handle);
+ }
+ ~Context ()
+ {
+ Dispose (false);
+ }
+
+ public IntPtr Handle { get { return handle; }}
+
+ public void AddReference () {
+ NativeMethods.vkvg_reference (handle);
+ }
+ public uint References () => NativeMethods.vkvg_get_reference_count (handle);
+
+ public double LineWidth {
+ set { NativeMethods.vkvg_set_line_width (handle, (float)value); }
+ }
+ public uint FontSize {
+ set { NativeMethods.vkvg_set_font_size (handle, value); }
+ }
+ public string FontFace {
+ set { NativeMethods.vkvg_select_font_face (handle, value); }
+ }
+ public Operator Operator {
+ set { NativeMethods.vkvg_set_operator (handle, value); }
+ get { return NativeMethods.vkvg_get_operator (handle); }
+ }
+ public FontExtents FontExtents {
+ get {
+ FontExtents f_extents;
+ NativeMethods.vkvg_font_extents (handle, out f_extents);
+ return f_extents;
+ }
+ }
+ public TextExtents TextExtents(string s)
+ {
+ TextExtents extents;
+ NativeMethods.vkvg_text_extents (handle, TerminateUtf8(s), out extents);
+ return extents;
+ }
+ public void ShowText (string txt) {
+ NativeMethods.vkvg_show_text (handle, txt);
+ }
+ public void Save () {
+ NativeMethods.vkvg_save (handle);
+ }
+ public void Restore () {
+ NativeMethods.vkvg_restore (handle);
+ }
+ public void Flush () {
+ NativeMethods.vkvg_flush (handle);
+ }
+ public void Clear () {
+ NativeMethods.vkvg_clear (handle);
+ }
+
+ public void Paint () {
+ NativeMethods.vkvg_paint (handle);
+ }
+ public void Arc (float xc, float yc, float radius, float a1, float a2) {
+ NativeMethods.vkvg_arc (handle, xc, yc, radius, a1, a2);
+ }
+ public void Arc (double xc, double yc, double radius, double a1, double a2) {
+ NativeMethods.vkvg_arc (handle, (float)xc, (float)yc, (float)radius, (float)a1, (float)a2);
+ }
+ public void ArcNegative (float xc, float yc, float radius, float a1, float a2) {
+ NativeMethods.vkvg_arc_negative (handle, xc, yc, radius, a1, a2);
+ }
+ public void Rectangle (float x, float y, float width, float height) {
+ NativeMethods.vkvg_rectangle (handle, x, y, width, height);
+ }
+ public void Scale (float sx, float sy) {
+ NativeMethods.vkvg_scale (handle, sx, sy);
+ }
+ public void Translate (float dx, float dy) {
+ NativeMethods.vkvg_translate (handle, dx, dy);
+ }
+ public void Rotate (float alpha) {
+ NativeMethods.vkvg_rotate (handle, alpha);
+ }
+ public void ArcNegative (double xc, double yc, double radius, double a1, double a2) {
+ NativeMethods.vkvg_arc_negative (handle, (float)xc, (float)yc, (float)radius, (float)a1, (float)a2);
+ }
+ public void Rectangle (double x, double y, double width, double height) {
+ NativeMethods.vkvg_rectangle (handle, (float)x, (float)y, (float)width, (float)height);
+ }
+ public void Scale (double sx, double sy) {
+ NativeMethods.vkvg_scale (handle, (float)sx, (float)sy);
+ }
+ public void Translate (double dx, double dy) {
+ NativeMethods.vkvg_translate (handle, (float)dx, (float)dy);
+ }
+ public void Rotate (double alpha) {
+ NativeMethods.vkvg_rotate (handle, (float)alpha);
+ }
+
+ public void Fill () {
+ NativeMethods.vkvg_fill (handle);
+ }
+ public void FillPreserve () {
+ NativeMethods.vkvg_fill_preserve (handle);
+ }
+ public void Stroke () {
+ NativeMethods.vkvg_stroke (handle);
+ }
+ public void StrokePreserve () {
+ NativeMethods.vkvg_stroke_preserve (handle);
+ }
+ public void Clip () {
+ NativeMethods.vkvg_clip (handle);
+ }
+ public void ClipPreserve () {
+ NativeMethods.vkvg_clip_preserve (handle);
+ }
+ public void ResetClip () {
+ NativeMethods.vkvg_reset_clip (handle);
+ }
+ public void NewPath () {
+ NativeMethods.vkvg_new_path (handle);
+ }
+ public void NewSubPath () {
+ NativeMethods.vkvg_new_sub_path (handle);
+ }
+ public void ClosePath () {
+ NativeMethods.vkvg_close_path (handle);
+ }
+
+// public void Rectangle (float x, float y, float width, float height){
+// NativeMethods.vkvg_rectangle ();
+// }
+ public void MoveTo (PointD p){
+ NativeMethods.vkvg_move_to (handle, (float)p.X, (float)p.Y);
+ }
+ public void MoveTo (Point p){
+ NativeMethods.vkvg_move_to (handle, p.X, p.Y);
+ }
+ public void MoveTo (float x, float y){
+ NativeMethods.vkvg_move_to (handle, x, y);
+ }
+ public void RelMoveTo (float x, float y){
+ NativeMethods.vkvg_rel_move_to (handle, x, y);
+ }
+ public void LineTo (float x, float y){
+ NativeMethods.vkvg_line_to (handle, x, y);
+ }
+ public void LineTo (Point p){
+ NativeMethods.vkvg_line_to (handle, p.X, p.Y);
+ }
+ public void LineTo (PointD p){
+ NativeMethods.vkvg_line_to (handle, (float)p.X, (float)p.Y);
+ }
+ public void RelLineTo (float x, float y){
+ NativeMethods.vkvg_rel_line_to (handle, x, y);
+ }
+ public void CurveTo (float x1, float y1, float x2, float y2, float x3, float y3){
+ NativeMethods.vkvg_curve_to (handle, x1, y1, x2, y2, x3, y3);
+ }
+ public void RelCurveTo (float x1, float y1, float x2, float y2, float x3, float y3){
+ NativeMethods.vkvg_rel_curve_to (handle, x1, y1, x2, y2, x3, y3);
+ }
+
+ public void MoveTo (double x, double y){
+ NativeMethods.vkvg_move_to (handle, (float)x, (float)y);
+ }
+ public void RelMoveTo (double x, double y){
+ NativeMethods.vkvg_rel_move_to (handle, (float)x, (float)y);
+ }
+ public void LineTo (double x, double y){
+ NativeMethods.vkvg_line_to (handle, (float)x, (float)y);
+ }
+ public void RelLineTo (double x, double y){
+ NativeMethods.vkvg_rel_line_to (handle, (float)x, (float)y);
+ }
+ public void CurveTo (double x1, double y1, double x2, double y2, double x3, double y3){
+ NativeMethods.vkvg_curve_to (handle, (float)x1, (float)y1, (float)x2, (float)y2, (float)x3, (float)y3);
+ }
+ public void RelCurveTo (double x1, double y1, double x2, double y2, double x3, double y3){
+ NativeMethods.vkvg_rel_curve_to (handle, (float)x1, (float)y1, (float)x2, (float)y2, (float)x3, (float)y3);
+ }
+
+ public void SetSource (Pattern pat) {
+ NativeMethods.vkvg_set_source (handle, pat.Handle);
+ }
+ public void SetSource (float r, float g, float b, float a = 1f) {
+ NativeMethods.vkvg_set_source_rgba (handle, r, g, b, a);
+ }
+ public void SetSource (double r, double g, double b, double a = 1.0) {
+ NativeMethods.vkvg_set_source_rgba (handle, (float)r, (float)g, (float)b, (float)a);
+ }
+ public void SetSource (Surface surf, float x = 0f, float y = 0f) {
+ NativeMethods.vkvg_set_source_surface (handle, surf.Handle, x, y);
+ }
+ public void SetSourceSurface (Surface surf, float x = 0f, float y = 0f) {
+ NativeMethods.vkvg_set_source_surface (handle, surf.Handle, x, y);
+ }
+
+ private static byte[] TerminateUtf8(string s)
+ {
+ // compute the byte count including the trailing \0
+ var byteCount = Encoding.UTF8.GetMaxByteCount(s.Length + 1);
+ var bytes = new byte[byteCount];
+ Encoding.UTF8.GetBytes(s, 0, s.Length, bytes, 0);
+ return bytes;
+ }
+
+ #region IDisposable implementation
+ public void Dispose ()
+ {
+ Dispose (true);
+ GC.SuppressFinalize (this);
+ }
+
+ protected virtual void Dispose (bool disposing)
+ {
+ if (!disposing || handle == IntPtr.Zero)
+ return;
+
+ NativeMethods.vkvg_destroy (handle);
+ handle = IntPtr.Zero;
+ }
+ #endregion
+ }
+}
+
--- /dev/null
+//
+// Context.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2018 jp
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+
+namespace vkvg
+{
+ public class Device: IDisposable
+ {
+
+ IntPtr handle = IntPtr.Zero;
+
+ #region CTORS & DTOR
+ public Device (IntPtr instance, IntPtr phy, IntPtr dev, uint qFamIdx, SampleCount samples = SampleCount.Sample_1, uint qIndex = 0)
+ {
+ handle = NativeMethods.vkvg_device_create_multisample (instance, phy, dev, qFamIdx, qIndex, samples, false);
+ }
+ ~Device ()
+ {
+ Dispose (false);
+ }
+ #endregion
+
+ public void GetDpy (out int hdpy, out int vdpy) {
+ NativeMethods.vkvg_device_get_dpy (handle, out hdpy, out vdpy);
+ }
+ public void SetDpy (int hdpy, int vdpy) {
+ NativeMethods.vkvg_device_set_dpy (handle, hdpy, vdpy);
+ }
+ public void AddReference () {
+ NativeMethods.vkvg_device_reference (handle);
+ }
+ public uint References () => NativeMethods.vkvg_device_get_reference_count (handle);
+
+ public IntPtr Handle { get { return handle; }}
+
+ #region IDisposable implementation
+ public void Dispose ()
+ {
+ Dispose (true);
+ GC.SuppressFinalize (this);
+ }
+
+ protected virtual void Dispose (bool disposing)
+ {
+ if (!disposing || handle == IntPtr.Zero)
+ return;
+
+ NativeMethods.vkvg_device_destroy (handle);
+ handle = IntPtr.Zero;
+ }
+ #endregion
+ }
+}
+
--- /dev/null
+//
+// Enums.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+
+namespace vkvg {
+ public enum Status {
+ Success = 0,
+ NoMemory,
+ InvalidRestore,
+ InvalidPopGroup,
+ NoCurrentPoint,
+ InvalidMatrix,
+ InvalidStatus,
+ NullPointer,
+ InvalidString,
+ InvalidPathData,
+ ReadError,
+ WriteError,
+ SurfaceFinished,
+ SurfaceTypeMismatch,
+ PatternTypeMismatch,
+ InvalidContent,
+ InvalidFormat,
+ InvalidVisual,
+ FileNotFound,
+ InvalidDash
+ }
+
+ public enum Direction {
+ Horizontal = 0,
+ Vertical = 1
+ }
+
+ public enum Format {
+ ARGB32,
+ RGB24,
+ A8,
+ A1
+ }
+
+ public enum Extend {
+ None,
+ Repeat,
+ Reflect,
+ Pad
+ }
+
+ public enum Filter {
+ Fast,
+ Good,
+ Best,
+ Nearest,
+ Bilinear,
+ Gaussian,
+ }
+
+ public enum PatternType {
+ Solid,
+ Surface,
+ Linear,
+ Radial,
+ Mesh,
+ RasterSource,
+ }
+
+ public enum Operator {
+ Clear,
+ Source,
+ Over,
+ In,
+ Out,
+ Atop,
+
+ Dest,
+ DestOver,
+ DestIn,
+ DestOut,
+ DestAtop,
+
+ Xor,
+ Add,
+ Saturate,
+ }
+
+ public enum FontSlant {
+ Normal,
+ Italic,
+ Oblique
+ }
+ public enum FontWeight {
+ Normal,
+ Bold,
+ }
+
+ public enum SampleCount {
+ Sample_1 = 0x00000001,
+ Sample_2 = 0x00000002,
+ Sample_4 = 0x00000004,
+ Sample_8 = 0x00000008,
+ Sample_16 = 0x00000010,
+ Sample_32 = 0x00000020,
+ Sample_64 = 0x00000040
+ }
+
+ public enum LineCap {
+ Butt,
+ Round,
+ Square
+ }
+
+ public enum LineJoin {
+ Miter,
+ Round,
+ Bevel
+ }
+}
\ No newline at end of file
--- /dev/null
+//
+// Mono.Cairo.FontExtents.cs
+//
+// Authors: Duncan Mak (duncan@ximian.com)
+// Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//
+// (C) Ximian, Inc. 2003
+//
+// This is a simplistic binding of the Cairo API to C#. All functions
+// in cairo.h are transcribed into their C# equivelants
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace vkvg
+{
+ [StructLayout (LayoutKind.Sequential)]
+ public struct FontExtents
+ {
+ float ascent;
+ float descent;
+ float height;
+ float maxXAdvance;
+ float maxYAdvance;
+
+ public float Ascent {
+ get { return ascent; }
+ set { ascent = value; }
+ }
+
+ public float Descent {
+ get { return descent; }
+ set { descent = value; }
+ }
+
+ public float Height {
+ get { return height; }
+ set { height = value; }
+ }
+
+ public float MaxXAdvance {
+ get { return maxXAdvance; }
+ set { maxXAdvance = value; }
+ }
+
+ public float MaxYAdvance {
+ get { return maxYAdvance; }
+ set { maxYAdvance = value; }
+ }
+
+ public FontExtents (float ascent, float descent, float height, float maxXAdvance, float maxYAdvance)
+ {
+ this.ascent = ascent;
+ this.descent = descent;
+ this.height = height;
+ this.maxXAdvance = maxXAdvance;
+ this.maxYAdvance = maxYAdvance;
+ }
+
+ public override bool Equals (object obj)
+ {
+ if (obj is FontExtents)
+ return this == (FontExtents) obj;
+ return false;
+ }
+
+ public override int GetHashCode ()
+ {
+ return (int) Ascent ^ (int) Descent ^ (int) Height ^ (int) MaxXAdvance ^ (int) MaxYAdvance;
+ }
+
+ public static bool operator == (FontExtents extents, FontExtents other)
+ {
+ return extents.Ascent == other.Ascent && extents.Descent == other.Descent && extents.Height == other.Height && extents.MaxXAdvance == other.MaxXAdvance && extents.MaxYAdvance == other.MaxYAdvance;
+ }
+
+ public static bool operator != (FontExtents extents, FontExtents other)
+ {
+ return !(extents == other);
+ }
+ }
+}
--- /dev/null
+//
+// Matrix.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2019 jp
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+namespace vkvg {
+ public struct Matrix {
+ float xx; float yx;
+ float xy; float yy;
+ float x0; float y0;
+
+ public float XX { get { return xx; } set { xx = value; } }
+ public float YX { get { return yx; } set { yx = value; } }
+ public float XY { get { return xy; } set { xy = value; } }
+ public float YY { get { return yy; } set { yy = value; } }
+ public float X0 { get { return x0; } set { x0 = value; } }
+ public float Y0 { get { return y0; } set { y0 = value; } }
+
+ public static Matrix Create (float xx, float yx, float xy, float yy, float x0, float y0) {
+ Matrix tmp;
+ NativeMethods.vkvg_matrix_init (out tmp, xx, yx, xy, yy, x0, y0);
+ return tmp;
+ }
+ public static Matrix CreateTranslation (float tx, float ty) {
+ Matrix tmp;
+ NativeMethods.vkvg_matrix_init_translate (out tmp, tx, ty);
+ return tmp;
+ }
+ public static Matrix CreateRotation (float radian) {
+ Matrix tmp;
+ NativeMethods.vkvg_matrix_init_rotate (out tmp, radian);
+ return tmp;
+ }
+ public static Matrix CreateScale (float sx, float sy) {
+ Matrix tmp;
+ NativeMethods.vkvg_matrix_init_scale (out tmp, sx, sy);
+ return tmp;
+ }
+ public static Matrix Identity {
+ get {
+ Matrix tmp;
+ NativeMethods.vkvg_matrix_init_identity (out tmp);
+ return tmp;
+ }
+ }
+
+ public void Translate (float tx, float ty) {
+ Matrix tmp = this;
+ NativeMethods.vkvg_matrix_translate (ref tmp, tx, ty);
+ xx = tmp.xx; yx = tmp.yx;
+ xy = tmp.xy; yy = tmp.yy;
+ x0 = tmp.x0; y0 = tmp.y0;
+ }
+ public void Rotate (float radian) {
+ Matrix tmp = this;
+ NativeMethods.vkvg_matrix_rotate (ref tmp, radian);
+ xx = tmp.xx; yx = tmp.yx;
+ xy = tmp.xy; yy = tmp.yy;
+ x0 = tmp.x0; y0 = tmp.y0;
+ }
+ public void Scale (float sx, float sy) {
+ Matrix tmp = this;
+ NativeMethods.vkvg_matrix_scale (ref tmp, sx, sy);
+ xx = tmp.xx; yx = tmp.yx;
+ xy = tmp.xy; yy = tmp.yy;
+ x0 = tmp.x0; y0 = tmp.y0;
+ }
+ public void Invert () {
+ Matrix tmp = this;
+ NativeMethods.vkvg_matrix_invert (ref tmp);
+ xx = tmp.xx; yx = tmp.yx;
+ xy = tmp.xy; yy = tmp.yy;
+ x0 = tmp.x0; y0 = tmp.y0;
+ }
+ public void TransformDistance (ref float dx, ref float dy) {
+ NativeMethods.vkvg_matrix_transform_distance (ref this, ref dx, ref dy);
+ }
+ public void TransformPoint (ref float px, ref float py) {
+ NativeMethods.vkvg_matrix_transform_distance (ref this, ref px, ref py);
+ }
+
+ public static Matrix operator *(Matrix a, Matrix b) {
+ Matrix tmp;
+ NativeMethods.vkvg_matrix_multiply (out tmp, ref a, ref b);
+ return tmp;
+ }
+
+ public override string ToString () {
+ return string.Format ($"({xx};{yx};{xy};{yy};{x0};{y0})");
+ }
+ }
+}
--- /dev/null
+//
+// NativeMethods.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2018 jp
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Runtime.InteropServices;
+
+namespace vkvg
+{
+ internal static class NativeMethods
+ {
+ const string libvkvg = "vkvg";
+
+ #region Device
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_device_create (IntPtr instance, IntPtr phy, IntPtr dev, uint qFamIdx, uint qIndex);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_device_destroy (IntPtr device);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_device_create_multisample (IntPtr inst, IntPtr phy, IntPtr vkdev, uint qFamIdx, uint qIndex, SampleCount samples, bool deferredResolve);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_device_reference (IntPtr dev);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern uint vkvg_device_get_reference_count (IntPtr dev);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_device_set_dpy (IntPtr dev, int hdpy, int vdpy);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_device_get_dpy (IntPtr dev, out int hdpy, out int vdpy);
+ #endregion
+
+ #region Context
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_create (IntPtr surface);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_destroy (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_flush (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_new_path (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_new_sub_path (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_close_path (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_line_to (IntPtr ctx, float x, float y);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_rel_line_to (IntPtr ctx, float x, float y);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_move_to (IntPtr ctx, float x, float y);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_rel_move_to (IntPtr ctx, float x, float y);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_arc (IntPtr ctx, float xc, float yc, float radius, float a1, float a2);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_arc_negative (IntPtr ctx, float xc, float yc, float radius, float a1, float a2);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_curve_to (IntPtr ctx, float x1, float y1, float x2, float y2, float x3, float y3);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_rel_curve_to (IntPtr ctx, float x1, float y1, float x2, float y2, float x3, float y3);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_rectangle (IntPtr ctx, float x, float y, float width, float height);
+
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_scale (IntPtr ctx, float sx, float sy);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_translate (IntPtr ctx, float dx, float dy);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_rotate (IntPtr ctx, float alpha);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_transform (IntPtr ctx, ref Matrix matrix);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_matrix (IntPtr ctx, ref Matrix matrix);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_get_matrix (IntPtr ctx, out Matrix matrix);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_identity_matrix (IntPtr ctx);
+
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_stroke (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_stroke_preserve (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_clip (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_clip_preserve (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_reset_clip (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_fill (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_fill_preserve (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_paint (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_source_rgba (IntPtr ctx, float r, float g, float b, float a);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_line_width (IntPtr ctx, float width);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_line_cap (IntPtr ctx, LineCap cap);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_line_join (IntPtr ctx, LineJoin join);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_operator (IntPtr ctx, Operator op);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern Operator vkvg_get_operator (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_source_surface(IntPtr ctx, IntPtr surf, float x, float y);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_source(IntPtr ctx, IntPtr pattern);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_font_extents (IntPtr ctx, out FontExtents extents);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_text_extents (IntPtr ctx, byte[] utf8, out TextExtents extents);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_select_font_face (IntPtr ctx, string name);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_set_font_size (IntPtr ctx, uint size);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_show_text (IntPtr ctx, string text);
+
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_save (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_restore (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_clear (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern float vkvg_get_line_width (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern LineCap vkvg_get_line_cap (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern LineJoin vkvg_get_line_join (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_get_source (IntPtr ctx);
+
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_reference (IntPtr ctx);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern uint vkvg_get_reference_count (IntPtr ctx);
+ #endregion
+
+ #region TextRun
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_text_run_create (IntPtr ctx, byte[] utf8);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_text_run_destroy (IntPtr textRun);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_show_text_run (IntPtr ctx, IntPtr textRun);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_text_run_get_extents (IntPtr textRun);
+ #endregion
+
+ #region Pattern
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_create ();
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_reference (IntPtr pat);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern uint vkvg_pattern_get_reference_count(IntPtr pat);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_create_rgba (float r, float g, float b, float a);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_create_rgb (float r, float g, float b);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_create_for_surface (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_create_linear (float x0, float y0, float x1, float y1);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_pattern_create_radial (float cx0, float cy0, float radius0,
+ float cx1, float cy1, float radius1);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_pattern_destroy (IntPtr pat);
+
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_patter_add_color_stop (IntPtr pat, float offset, float r, float g, float b, float a);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_pattern_set_extend (IntPtr pat, Extend extend);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_pattern_set_filter (IntPtr pat, Filter filter);
+
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern Extend vkvg_pattern_get_extend (IntPtr pat);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern Filter vkvg_pattern_get_filter (IntPtr pat);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern PatternType vkvg_pattern_get_type (IntPtr pat);
+ #endregion
+
+ #region Matrices
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_init_identity (out Matrix matrix);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_init (out Matrix matrix,
+ float xx, float yx,
+ float xy, float yy,
+ float x0, float y0);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_init_translate (out Matrix matrix, float tx, float ty);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_init_scale (out Matrix matrix, float sx, float sy);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_init_rotate (out Matrix matrix, float radians);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_translate (ref Matrix matrix, float tx, float ty);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_scale (ref Matrix matrix, float sx, float sy);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_rotate (ref Matrix matrix, float radians);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_multiply (out Matrix result, ref Matrix a, ref Matrix b);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_transform_distance (ref Matrix matrix, ref float dx, ref float dy);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_transform_point (ref Matrix matrix, ref float x, ref float y);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_matrix_invert (ref Matrix matrix);
+ #endregion
+
+ #region Surface
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_surface_create (IntPtr device, uint width, uint height);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_surface_create_from_image (IntPtr dev, string filePath);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_surface_create_from_bitmap (IntPtr dev, ref byte[] data, uint width, uint height);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_surface_destroy (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_surface_get_vk_image (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern int vkvg_surface_get_width (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern int vkvg_surface_get_height (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_surface_clear (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern IntPtr vkvg_surface_reference (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern uint vkvg_surface_get_reference_count (IntPtr surf);
+ [DllImport (libvkvg, CallingConvention=CallingConvention.Cdecl)]
+ internal static extern void vkvg_surface_write_to_png (IntPtr surf, [MarshalAs(UnmanagedType.LPStr)]string path);
+ #endregion
+ }
+}
+
--- /dev/null
+//
+// Pattern.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2019 jp
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+namespace vkvg {
+ public class Pattern : IDisposable {
+
+ IntPtr handle = IntPtr.Zero;
+
+ #region CTORS & DTOR
+ protected Pattern (IntPtr handle) {
+ this.handle = handle;
+ }
+ public Pattern () {
+ handle = NativeMethods.vkvg_pattern_create ();
+ }
+ public Pattern (float r, float g, float b) {
+ handle = NativeMethods.vkvg_pattern_create_rgb (r, g, b);
+ }
+ public Pattern (float r, float g, float b, float a) {
+ handle = NativeMethods.vkvg_pattern_create_rgba (r, g, b, a);
+ }
+ public Pattern (Surface surf) {
+ handle = NativeMethods.vkvg_pattern_create_for_surface (surf.Handle);
+ }
+
+ ~Pattern () {
+ Dispose (false);
+ }
+ #endregion
+
+ public static Pattern CreateLinearGradient (float x0, float y0, float x1, float y1) {
+ return new Pattern (NativeMethods.vkvg_pattern_create_linear (x0, y0, x1, y1));
+ }
+ public static Pattern CreateRadialGradient (float cx0, float cy0, float radius0,
+ float cx1, float cy1, float radius1) {
+ return new Pattern (NativeMethods.vkvg_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1));
+ }
+
+ public void AddReference () {
+ NativeMethods.vkvg_pattern_reference (handle);
+ }
+ public uint References () => NativeMethods.vkvg_pattern_get_reference_count (handle);
+
+ public IntPtr Handle { get { return handle; } }
+
+ public Extend Extend {
+ set { NativeMethods.vkvg_pattern_set_extend (handle, value); }
+ get { return NativeMethods.vkvg_pattern_get_extend (handle); }
+ }
+ public Filter Filter {
+ set { NativeMethods.vkvg_pattern_set_filter (handle, value); }
+ get { return NativeMethods.vkvg_pattern_get_filter (handle); }
+ }
+
+ public void AddColorStop (float offset, float r, float g, float b, float a = 1f) {
+ NativeMethods.vkvg_patter_add_color_stop (handle, offset, r, g, b, a);
+ }
+
+ #region IDisposable implementation
+ public void Dispose () {
+ Dispose (true);
+ GC.SuppressFinalize (this);
+ }
+
+ protected virtual void Dispose (bool disposing) {
+ if (!disposing || handle == IntPtr.Zero)
+ return;
+
+ NativeMethods.vkvg_pattern_destroy (handle);
+ handle = IntPtr.Zero;
+ }
+ #endregion
+ }
+}
\ No newline at end of file
--- /dev/null
+//
+// Point.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
+//
+// Copyright (c) 2013-2017 Jean-Philippe Bruyère
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+
+namespace vkvg {
+ public struct Point
+ {
+ int _x;
+ int _y;
+
+ public int X
+ {
+ get { return _x; }
+ set { _x = value; }
+ }
+ public int Y
+ {
+ get { return _y; }
+ set { _y = value; }
+ }
+ public Point(int x, int y)
+ {
+ _x = x;
+ _y = y;
+ }
+
+ public int Length {
+ get { return (int)Math.Sqrt (Math.Pow (_x, 2) + Math.Pow (_y, 2)); }
+ }
+ public double LengthD {
+ get { return Math.Sqrt (Math.Pow (_x, 2) + Math.Pow (_y, 2)); }
+ }
+ public static implicit operator PointD(Point p)
+ {
+ return new PointD(p.X, p.Y);
+ }
+ public static implicit operator System.Drawing.Point(Point p)
+ {
+ return new System.Drawing.Point(p.X, p.Y);
+ }
+ public static implicit operator Point(System.Drawing.Point p)
+ {
+ return new Point(p.X, p.Y);
+ }
+ public static implicit operator Point(int i)
+ {
+ return new Point(i, i);
+ }
+ public static Point operator /(Point p, int d)
+ {
+ return new Point(p.X / d, p.Y / d);
+ }
+ public static Point operator *(Point p, int d)
+ {
+ return new Point(p.X * d, p.Y * d);
+ }
+ public static Point operator /(Point p, double d)
+ {
+ return new Point((int)(p.X / d), (int)(p.Y / d));
+ }
+ public static Point operator *(Point p, double d)
+ {
+ return new Point((int)(p.X * d), (int)(p.Y * d));
+ }
+ public static Point operator +(Point p1, Point p2)
+ {
+ return new Point(p1.X + p2.X, p1.Y + p2.Y);
+ }
+ public static Point operator +(Point p, int i)
+ {
+ return new Point(p.X + i, p.Y + i);
+ }
+ public static Point operator -(Point p1, Point p2)
+ {
+ return new Point(p1.X - p2.X, p1.Y - p2.Y);
+ }
+ public static bool operator >=(Point p1, Point p2)
+ {
+ return p1.X >= p2.X && p1.Y >= p2.Y ? true : false;
+ }
+ public static bool operator <=(Point p1, Point p2)
+ {
+ return p1.X <= p2.X && p1.Y <= p2.Y ? true : false;
+ }
+ public static bool operator ==(Point s, int i)
+ {
+ if (s.X == i && s.Y == i)
+ return true;
+ else
+ return false;
+ }
+ public static bool operator !=(Point s, int i)
+ {
+ if (s.X == i && s.Y == i)
+ return false;
+ else
+ return true;
+ }
+ public static bool operator >(Point s, int i)
+ {
+ if (s.X > i && s.Y > i)
+ return true;
+ else
+ return false;
+ }
+ public static bool operator <(Point s, int i)
+ {
+ if (s.X < i && s.Y < i)
+ return true;
+ else
+ return false;
+ }
+ public static bool operator ==(Point s1, Point s2)
+ {
+ if (s1.X == s2.X && s1.Y == s2.Y)
+ return true;
+ else
+ return false;
+ }
+ public static bool operator !=(Point s1, Point s2)
+ {
+ if (s1.X == s2.X && s1.Y == s2.Y)
+ return false;
+ else
+ return true;
+ }
+
+ public override string ToString()
+ {
+ return string.Format("({0},{1})", X, Y);
+ }
+
+ public override bool Equals(object obj)
+ {
+ return base.Equals(obj);
+ }
+ public override int GetHashCode()
+ {
+ return base.GetHashCode();
+ }
+ public static Point Parse(string s)
+ {
+ if (string.IsNullOrEmpty (s))
+ return default(Point);
+ string[] d = s.Trim().Split(',');
+ if (d.Length == 2)
+ return new Point (int.Parse (d [0]), int.Parse (d [1]));
+ else if (d.Length == 1) {
+ int tmp = int.Parse (d [0]);
+ return new Point (tmp, tmp);
+ }
+ throw new Exception ("Crow.Point Parsing Error: " + s);
+ }
+ }
+
+}
--- /dev/null
+//
+// Mono.Context.cs
+//
+// Author:
+// Duncan Mak (duncan@ximian.com)
+// Miguel de Icaza (miguel@novell.com)
+// Hisham Mardam Bey (hisham.mardambey@gmail.com)
+// Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace vkvg {
+
+ public struct PointD
+ {
+ public PointD (double x, double y)
+ {
+ this.x = x;
+ this.y = y;
+ }
+
+ double x, y;
+ public double X {
+ get { return x; }
+ set { x = value; }
+ }
+
+ public double Y {
+ get { return y; }
+ set { y = value; }
+ }
+ }
+}
--- /dev/null
+//
+// Context.cs
+//
+// Author:
+// Jean-Philippe Bruyère <jp_bruyere@hotmail.com>
+//
+// Copyright (c) 2018 jp
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+
+namespace vkvg
+{
+ public class Surface: IDisposable
+ {
+ IntPtr handle = IntPtr.Zero;
+ Device vkvgDev;
+
+ public Surface (Device device, int width, int heigth)
+ {
+ vkvgDev = device;
+ handle = NativeMethods.vkvg_surface_create (device.Handle, (uint)width, (uint)heigth);
+ }
+ public Surface (Device device, ref byte[] data, int width, int heigth)
+ {
+ vkvgDev = device;
+ handle = NativeMethods.vkvg_surface_create (device.Handle, (uint)width, (uint)heigth);
+ }
+ public Surface (Device device, string imgPath) {
+ vkvgDev = device;
+ handle = NativeMethods.vkvg_surface_create_from_image (device.Handle, imgPath);
+ }
+
+ Surface (IntPtr devHandle, int width, int heigth)
+ {
+ handle = NativeMethods.vkvg_surface_create (devHandle, (uint)width, (uint)heigth);
+ }
+ ~Surface ()
+ {
+ Dispose (false);
+ }
+
+ public IntPtr Handle { get { return handle; }}
+ public IntPtr VkImage { get { return NativeMethods.vkvg_surface_get_vk_image (handle); }}
+ public int Width { get { return NativeMethods.vkvg_surface_get_width (handle); }}
+ public int Height { get { return NativeMethods.vkvg_surface_get_height (handle); }}
+
+ public void AddReference () {
+ NativeMethods.vkvg_surface_reference (handle);
+ }
+ public uint References () => NativeMethods.vkvg_surface_get_reference_count (handle);
+
+// public Surface CreateSimilar (uint width, uint height) {
+// return new Surface (handle, width, height);
+// }
+// public Surface CreateSimilar (int width, int height) {
+// return new Surface (handle, (uint)width, (uint)height);
+// }
+
+ public void Flush () {
+ throw new NotImplementedException ();
+ }
+
+ public void WriteToPng (string path) {
+ NativeMethods.vkvg_surface_write_to_png (handle, path);
+ }
+ public void Clear () {
+ NativeMethods.vkvg_surface_clear (handle);
+ }
+
+ #region IDisposable implementation
+ public void Dispose ()
+ {
+ Dispose (true);
+ GC.SuppressFinalize (this);
+ }
+
+ protected virtual void Dispose (bool disposing)
+ {
+ if (!disposing || handle == IntPtr.Zero)
+ return;
+
+ NativeMethods.vkvg_surface_destroy (handle);
+ handle = IntPtr.Zero;
+ }
+ #endregion
+ }
+}
+
--- /dev/null
+//
+// Mono.Cairo.TextExtents.cs
+//
+// Authors:
+// Duncan Mak (duncan@ximian.com)
+// Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//
+// (C) Ximian, Inc. 2003
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace vkvg
+{
+ [StructLayout (LayoutKind.Sequential)]
+ public struct TextExtents
+ {
+ float xbearing;
+ float ybearing;
+ float width;
+ float height;
+ float xadvance;
+ float yadvance;
+
+ public float XBearing {
+ get { return xbearing; }
+ set { xbearing = value; }
+ }
+
+ public float YBearing {
+ get { return ybearing; }
+ set { ybearing = value; }
+ }
+
+ public float Width {
+ get { return width; }
+ set { width = value; }
+ }
+
+ public float Height {
+ get { return height; }
+ set { height = value; }
+ }
+
+ public float XAdvance {
+ get { return xadvance; }
+ set { xadvance = value; }
+ }
+
+ public float YAdvance {
+ get { return yadvance; }
+ set { yadvance = value; }
+ }
+
+ public override bool Equals (object obj)
+ {
+ if (obj is TextExtents)
+ return this == (TextExtents)obj;
+ return false;
+ }
+
+ public override int GetHashCode ()
+ {
+ return (int)XBearing ^ (int)YBearing ^ (int)Width ^ (int)Height ^ (int)XAdvance ^ (int)YAdvance;
+ }
+
+ public static bool operator == (TextExtents extents, TextExtents other)
+ {
+ return extents.XBearing == other.XBearing && extents.YBearing == other.YBearing && extents.Width == other.Width && extents.Height == other.Height && extents.XAdvance == other.XAdvance && extents.YAdvance == other.YAdvance;
+ }
+
+ public static bool operator != (TextExtents extents, TextExtents other)
+ {
+ return !(extents == other);
+ }
+ }
+}