1 /*
2     Private constructors and destructors
3     Copyright (C) 2007 by Andrew Zabolotny
4 */
5 
6 #include "config.h"
7 #include "lensfun.h"
8 #include "lensfunprv.h"
9 
lfCamera()10 lfCamera::lfCamera ()
11 {
12     Maker = NULL;
13     Model = NULL;
14     Variant = NULL;
15     Mount = NULL;
16     CropFactor = 0.0f;
17 }
18 
~lfCamera()19 lfCamera::~lfCamera ()
20 {
21     lf_free (Maker);
22     lf_free (Model);
23     lf_free (Variant);
24     lf_free (Mount);
25 }
26 
lfCamera(const lfCamera & other)27 lfCamera::lfCamera (const lfCamera &other)
28 {
29     Maker = lf_mlstr_dup (other.Maker);
30     Model = lf_mlstr_dup (other.Model);
31     Variant = lf_mlstr_dup (other.Variant);
32     Mount = g_strdup (other.Mount);
33     CropFactor = other.CropFactor;
34 }
35 
operator =(const lfCamera & other)36 lfCamera &lfCamera::operator = (const lfCamera &other)
37 {
38     lf_free (Maker);
39     Maker = lf_mlstr_dup (other.Maker);
40     lf_free (Model);
41     Model = lf_mlstr_dup (other.Model);
42     lf_free (Variant);
43     Variant = lf_mlstr_dup (other.Variant);
44     _lf_setstr (&Mount, other.Mount);
45     CropFactor = other.CropFactor;
46     return *this;
47 }
48 
SetMaker(const char * val,const char * lang)49 void lfCamera::SetMaker (const char *val, const char *lang)
50 {
51     Maker = lf_mlstr_add (Maker, lang, val);
52 }
53 
SetModel(const char * val,const char * lang)54 void lfCamera::SetModel (const char *val, const char *lang)
55 {
56     Model = lf_mlstr_add (Model, lang, val);
57 }
58 
SetVariant(const char * val,const char * lang)59 void lfCamera::SetVariant (const char *val, const char *lang)
60 {
61     Variant = lf_mlstr_add (Variant, lang, val);
62 }
63 
SetMount(const char * val)64 void lfCamera::SetMount (const char *val)
65 {
66     _lf_setstr (&Mount, val);
67 }
68 
Check()69 bool lfCamera::Check ()
70 {
71     if (!Maker || !Model || !Mount || CropFactor <= 0)
72         return false;
73 
74     return true;
75 }
76 
77 //---------------------------// The C interface //---------------------------//
78 
lf_camera_new()79 lfCamera *lf_camera_new ()
80 {
81     return new lfCamera ();
82 }
83 
lf_camera_create()84 lfCamera *lf_camera_create ()
85 {
86     return new lfCamera ();
87 }
88 
lf_camera_destroy(lfCamera * camera)89 void lf_camera_destroy (lfCamera *camera)
90 {
91     delete camera;
92 }
93 
lf_camera_copy(lfCamera * dest,const lfCamera * source)94 void lf_camera_copy (lfCamera *dest, const lfCamera *source)
95 {
96     *dest = *source;
97 }
98 
lf_camera_check(lfCamera * camera)99 cbool lf_camera_check (lfCamera *camera)
100 {
101     return camera->Check ();
102 }
103