summaryrefslogtreecommitdiffstats
path: root/NEWS
blob: 063a8caf867e790951b26e1a245c6fe88b0362d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Changelog
=========

Changes in libuca 1.3
---------------------

### Correct ABI versioning

Until now, the ABI version was not set correctly and all versions prior 1.3 bear
the same ABI version 1. This version has ABI version 2 and all subsequent
versions will increase it if the ABI breaks.

### Minor changes

- Added `sensor-pixel-width` and `sensor-pixel-height` to describe the cameras
  pixel size in meters.
- Added `-c/--camera` flag to uca-camera-control to specify a camera name from
  the command-line and by-pass the choice window.


Changes in libuca 1.2
---------------------

### API break

The interface of uca_camera_grab() has changed. The buffer must be provided as a
void pointer (or gpointer in GLib speak), _not_ the address of a void pointer.
Furthermore, uca_camera_grab() returns TRUE if grabbing an image was successful
and FALSE if not.

The plugin manager does not call the plugins "constructor" function directly but
instantiates it via the GInitable initialization function. Therefore, all
plugins must implement initialization code in the objects init function and flag
errors in the init method from the GInitable interface.

### Restructuring of tools

All binary sources are now found in bin/, with the GUI application now
split off from the command line tools. Also, all tools are now installed with
a common "uca-" prefix, e.g. `uca-camera-control` and `uca-grab`.

### Minor changes

- Improved plugin packaging: Plugins can now specify a version number
  independent of libuca which is reflected when building RPM packages.
- `uca-grab` is a lot more useful now and gained `--num-frames` and `--duration`
  parameters as well as the possibility to write frames as a single multi-page
  TIFF file.
- Bug fixes for Dexela, pco and UFO cameras.


Changes in libuca 1.1
---------------------

### Plugin System

A new plugin manager is used to instantiate camera objects from a shared
library. Instead of calling `uca_camera_new`, a plugin manager is created that
looks in pre- and user-defined directories for DSOs that match
`libuca[A-Za-z].so` and used to instantiate:

    UcaPluginManager *manager;
    UcaCamera *camera;

    manager = uca_plugin_manager_new ();
    camera = uca_plugin_manager_get_camera (manager, "foo", &error);

The plugin manager adds a dependency on GModule (pkg-config package
`gmodule-2.0`) that is part of GLib.

### Minor changes

- It is now possible to generate GObject introspection meta data to bind libuca
  to all languages that support GObject introspection. A first experiment of
  UcaDevice using this was successful and the camera showed up in Jive.
- Added virtual function uca_camera_stop_readout() to cleanup after using
  uca_camera_start_readout().
- There is now a mechanism to register and query physical units of camera
  properties. Camera plugins must call uca_camera_register_unit() for each
  property that they want to have a physical unit (e.g. UCA_UNIT_SECOND)
  attached to. Client programs can get this information with
  uca_camera_get_unit().
- The control GUI learned some new tricks: live histogram, zooming and recording
  into an internal ring buffer.


Changes in libuca 1.0 aka 0.6
-----------------------------

### GObject Type System

Instead of using a home-grown type and class system, we switched to the GObject
system as part of GLib. This effort has the advantage of much more typesafe
properties and better signal and closure handling.

Most of the ideas and approaches of libuca 0.5 have been transfered. However,
instead of trying to initialize each camera first and having the user decide
what to use, the user must now determine the used camera at compile time or use
the factory pattern to delegate this to run-time. 

### Tango Wrapper

The old Tango wrapper has been superseded by a generic one that proxies
GObject's to the Tango bus. This makes things a lot easier, for example reacting
on remote property setting and more robust type safety.

The wrapper is developed as an external project at ISS by Volker Kaiser.


Changes in libuca 0.5.0
-----------------------

- Put work under LGPL 2.1
- Adapt cameras/ipe.c to support the current driver API
- Adapt cameras/pco.c to support libpco 0.3
- API changes
    - new enum type uca_buffer_status
    - uca_cam_grab_callback()s have to return uca_buffer_status
    - typedef all types
- New symbols:
    - uca_cam_release_buffer()