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 }