1 module skia.SK3dView;
2 
3 import skia.SKMatrix;
4 import skia.SKCanvas;
5 import skia.SKData;
6 import skia.Definitions;
7 import skia.SKObject;
8 import skia.SkiaApi;
9 import skia.Exceptions;
10 
11 class SK3dView : SKObject, ISKSkipObjectRegistration
12 {
13 	this (void* x, bool owns)
14 	{
15     super (x, owns);
16 	}
17 
18 	this ()
19 	{
20     this (SkiaApi.sk_3dview_new (), true);
21 		if (Handle is null) {
22 			throw new InvalidOperationException ("Unable to create a new SK3dView instance.");
23 		}
24 	}
25 
26 	protected override void Dispose (bool disposing)
27   {
28     return 	super.Dispose (disposing);
29   }
30 	
31 
32 	protected override void DisposeNative ()
33   {
34     return 	SkiaApi.sk_3dview_destroy (cast(sk_3dview_t*)Handle);
35   }
36 	
37 
38 	// Matrix
39 
40 	SKMatrix Matrix() 
41   {
42 			auto matrix = SKMatrix.Identity;
43 			GetMatrix ( matrix);
44 			return matrix;
45 	}
46 
47 	void GetMatrix (ref SKMatrix matrix)
48 	{
49 		SKMatrix* m = &matrix;
50 		SkiaApi.sk_3dview_get_matrix (cast(sk_3dview_t*)Handle, m);
51 	}
52 
53 	// Save
54 
55 	void Save ()
56   {
57     return SkiaApi.sk_3dview_save (cast(sk_3dview_t*)Handle);
58   }
59 		
60 
61 	// Restore
62 
63 	void Restore ()
64   {
65     return SkiaApi.sk_3dview_restore (cast(sk_3dview_t*)Handle);
66   }
67 		
68 
69 	// Translate
70 
71 	void Translate (float x, float y, float z)
72   {
73     return SkiaApi.sk_3dview_translate (cast(sk_3dview_t*)Handle, x, y, z);
74   }
75 		
76 
77 	void TranslateX (float x)
78   {
79     return 	Translate (x, 0, 0);
80   }
81 	
82 
83 	void TranslateY (float y)
84   {
85     return 	Translate (0, y, 0);
86   }
87 	
88 
89 	void TranslateZ (float z)
90   {
91     return Translate (0, 0, z);
92   }
93 		
94 
95 	// Rotate*Degrees
96 
97 	void RotateXDegrees (float degrees)
98   {
99     return SkiaApi.sk_3dview_rotate_x_degrees (cast(sk_3dview_t*)Handle, degrees);
100   }
101 		
102 
103 	void RotateYDegrees (float degrees)
104   {
105     return 	SkiaApi.sk_3dview_rotate_y_degrees (cast(sk_3dview_t*)Handle, degrees);
106   }
107 	
108 
109 	void RotateZDegrees (float degrees) 
110   {
111     return 	SkiaApi.sk_3dview_rotate_z_degrees (cast(sk_3dview_t*)Handle, degrees);
112   }
113 	
114 
115 	// Rotate*Radians
116 
117 	void RotateXRadians (float radians)
118   {
119      	SkiaApi.sk_3dview_rotate_x_radians (cast(sk_3dview_t*)Handle, radians);
120   }
121 	
122 
123 	void RotateYRadians (float radians)
124   {
125      SkiaApi.sk_3dview_rotate_y_radians (cast(sk_3dview_t*)Handle, radians);
126   }
127 		
128 
129 	void RotateZRadians (float radians)
130   {
131      SkiaApi.sk_3dview_rotate_z_radians (cast(sk_3dview_t*)Handle, radians);
132   }
133 		
134 
135 	// DotWithNormal
136 
137 	float DotWithNormal (float dx, float dy, float dz)
138   {
139     return SkiaApi.sk_3dview_dot_with_normal (cast(sk_3dview_t*)Handle, dx, dy, dz);
140   }
141 		
142 
143 	// Apply
144 
145 	void ApplyToCanvas (SKCanvas canvas)
146 	{
147 		if (canvas is null)
148 			throw new ArgumentNullException (canvas.stringof);
149 
150 		SkiaApi.sk_3dview_apply_to_canvas (cast(sk_3dview_t*)Handle, cast(sk_canvas_t*)canvas.Handle);
151 	}
152 }