replate-camera 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,6 +22,9 @@ RCT_EXTERN_METHOD(getPhotosCount:(RCTPromiseResolveBlock*)resolve
22
22
  RCT_EXTERN_METHOD(isScanComplete:(RCTPromiseResolveBlock*)resolve
23
23
  rejecter:(RCTPromiseRejectBlock)reject)
24
24
 
25
+ RCT_EXTERN_METHOD(getRemainingAnglesToScan:(RCTPromiseResolveBlock*)resolve
26
+ rejecter:(RCTPromiseRejectBlock)reject)
27
+
25
28
  + (BOOL)requiresMainQueueSetup
26
29
  {
27
30
  return NO;
@@ -18,6 +18,30 @@ class ReplateCameraViewManager: RCTViewManager {
18
18
 
19
19
  }
20
20
 
21
+ extension UIImage {
22
+ func rotate(radians: Float) -> UIImage {
23
+ var newSize = CGRect(origin: CGPoint.zero, size: self.size).applying(CGAffineTransform(rotationAngle: CGFloat(radians))).size
24
+ // Trim off the extremely small float value to prevent core graphics from rounding it up
25
+ newSize.width = floor(newSize.width)
26
+ newSize.height = floor(newSize.height)
27
+
28
+ UIGraphicsBeginImageContextWithOptions(newSize, false, self.scale)
29
+ let context = UIGraphicsGetCurrentContext()!
30
+
31
+ // Move origin to middle
32
+ context.translateBy(x: newSize.width/2, y: newSize.height/2)
33
+ // Rotate around middle
34
+ context.rotate(by: CGFloat(radians))
35
+ // Draw the image at its center
36
+ self.draw(in: CGRect(x: -self.size.width/2, y: -self.size.height/2, width: self.size.width, height: self.size.height))
37
+
38
+ let newImage = UIGraphicsGetImageFromCurrentImageContext()!
39
+ UIGraphicsEndImageContext()
40
+
41
+ return newImage
42
+ }
43
+ }
44
+
21
45
  class ReplateCameraView : UIView, ARSessionDelegate {
22
46
 
23
47
  static var arView: ARView!
@@ -212,6 +236,11 @@ class ReplateCameraController: NSObject {
212
236
  resolver(ReplateCameraView.photosFromDifferentAnglesTaken == 144)
213
237
  }
214
238
 
239
+ @objc(getRemainingAnglesToScan:rejecter:)
240
+ func getRemainingAnglesToScan(_ resolver: RCTPromiseResolveBlock, rejecter: RCTPromiseRejectBlock) -> Void{
241
+ resolver(144 - ReplateCameraView.photosFromDifferentAnglesTaken)
242
+ }
243
+
215
244
  @objc(takePhoto:rejecter:)
216
245
  func takePhoto(_ resolver: RCTPromiseResolveBlock, rejecter: RCTPromiseRejectBlock) -> Void {
217
246
 
@@ -220,6 +249,7 @@ class ReplateCameraController: NSObject {
220
249
  rejecter("[ReplateCameraController]", "Error saving photo", NSError(domain: "ReplateCameraController", code: 001, userInfo: nil));
221
250
  return
222
251
  }
252
+
223
253
  // Assuming you have two points
224
254
  let point1 = SIMD3<Float>(anchorNode.position.x,
225
255
  anchorNode.position.y,
@@ -243,7 +273,6 @@ class ReplateCameraController: NSObject {
243
273
 
244
274
  let cameraPosition = SIMD3<Float>(cameraTransform.columns.3.x, cameraTransform.columns.3.y, cameraTransform.columns.3.z)
245
275
 
246
-
247
276
  let directionToFirstPoint = normalize(point1 - cameraPosition)
248
277
  let directionToSecondPoint = normalize(point2 - cameraPosition)
249
278
 
@@ -262,6 +291,8 @@ class ReplateCameraController: NSObject {
262
291
  print("Is pointing at second point: \(isPointingAtSecondPoint)")
263
292
  } else {
264
293
  print("Camera transform data not available")
294
+ rejecter("[ReplateCameraController]", "Camera transform data not available", NSError(domain: "ReplateCameraController", code: 003, userInfo: nil))
295
+ return
265
296
  }
266
297
 
267
298
  print("Take photo")
@@ -270,7 +301,9 @@ class ReplateCameraController: NSObject {
270
301
  let ciimg = CIImage(cvImageBuffer: image)
271
302
  let ciImage = ciimg
272
303
  let cgImage = ReplateCameraController.cgImage(from: ciImage)!
273
- let finImage = UIImage(cgImage: cgImage)
304
+ let uiImage = UIImage(cgImage: cgImage)
305
+ let finImage = uiImage.rotate(radians: .pi/2) // Adjust radians as needed
306
+
274
307
  print("Saving photo")
275
308
  if let url = ReplateCameraController.saveImageAsJPEG(finImage) {
276
309
  resolver(url.absoluteString)
@@ -279,6 +312,9 @@ class ReplateCameraController: NSObject {
279
312
  return
280
313
  }
281
314
  }
315
+ }else{
316
+ rejecter("[ReplateCameraController]", "Object not in focus", NSError(domain: "ReplateCameraController", code: 002, userInfo: nil))
317
+ return
282
318
  }
283
319
 
284
320
  print("Error saving photo")
@@ -289,9 +325,12 @@ class ReplateCameraController: NSObject {
289
325
 
290
326
  static func cgImage(from ciImage: CIImage) -> CGImage? {
291
327
  let context = CIContext(options: nil)
328
+
292
329
  return context.createCGImage(ciImage, from: ciImage.extent)
293
330
  }
294
331
 
332
+
333
+
295
334
  static func saveImageAsJPEG(_ image: UIImage) -> URL? {
296
335
  // Convert UIImage to Data with JPEG representation
297
336
  guard let imageData = image.jpegData(compressionQuality: 1.0) else {
@@ -300,6 +339,8 @@ class ReplateCameraController: NSObject {
300
339
  return nil
301
340
  }
302
341
 
342
+ // UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
343
+
303
344
  // Get the temporary directory URL
304
345
  let temporaryDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true)
305
346
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replate-camera",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Camera component for Replate Manager",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",