Skip to content

Commit 06e0bba

Browse files
committed
Release 1.0.32
* Added program lookup using in PATH environment variable when launching process. * Added system::exec_detached functions for launching detached processes. * Some updates and improvements on the configuration parser and serializer. * Added condition variables support. * Added support of XPM1/XPM2/XPM3 icon format. * Improved interface of lsp::Color class. * Added lsp::mm::IColorMap interface. * Added lsp::mm::Bitmap class. * Better parsing APO equalizer text files. * Better decoding audio file loading errors. * Updated module versions in dependencies.
2 parents 160deac + deedd0b commit 06e0bba

84 files changed

Lines changed: 13497 additions & 589 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
* RECENT CHANGES
33
*******************************************************************************
44

5+
=== 1.0.32 ===
6+
* Added program lookup using in PATH environment variable when launching process.
7+
* Added system::exec_detached functions for launching detached processes.
8+
* Some updates and improvements on the configuration parser and serializer.
9+
* Added condition variables support.
10+
* Added support of XPM1/XPM2/XPM3 icon format.
11+
* Improved interface of lsp::Color class.
12+
* Added lsp::mm::IColorMap interface.
13+
* Added lsp::mm::Bitmap class.
14+
* Better parsing APO equalizer text files.
15+
* Better decoding audio file loading errors.
16+
* Updated module versions in dependencies.
17+
518
=== 1.0.31 ===
619
* Task execution mechanism moved task state field from volatile to atomic.
720
* Updated LLTL hashing specifications.

include/lsp-plug.in/fmt/RoomEQWizard.h

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
2-
* Copyright (C) 2025 Linux Studio Plugins Project <https://lsp-plug.in/>
3-
* (C) 2025 Vladimir Sadovnikov <sadko4u@gmail.com>
2+
* Copyright (C) 2026 Linux Studio Plugins Project <https://lsp-plug.in/>
3+
* (C) 2026 Vladimir Sadovnikov <sadko4u@gmail.com>
44
*
55
* This file is part of lsp-runtime-lib
66
* Created on: 6 сент. 2019 г.
@@ -43,13 +43,16 @@ namespace lsp
4343
LPQ, // 12dB/octave Low Pass filter with adjustable Q
4444
HPQ, // 12dB/octave High Pass filter with adjustable Q
4545
LS, // Low Shelf filter
46+
LSC, // Low Shelf filter (variation)
4647
HS, // High Shelf filter
48+
HSC, // High Shelf filter (variation)
4749
LS6, // 6dB/octave Low Shelf filter
4850
HS6, // 6dB/octave High Shelf filter
4951
LS12, // 12dB/octave Low Shelf filter
5052
HS12, // 12dB/octave High Shelf filter
5153
NO, // notch filter
52-
AP // allpass filter
54+
AP, // allpass filter
55+
BP, // bandpass filter
5356
};
5457

5558
typedef struct filter_t
@@ -86,12 +89,13 @@ namespace lsp
8689

8790
typedef struct config_t
8891
{
89-
int32_t nVerMaj; // Major version
90-
int32_t nVerMin; // Minor version
91-
const char *sEqType; // Equalizer type
92-
const char *sNotes; // Notes
93-
size_t nFilters; // Number of filters
94-
filter_t *vFilters; // List of filters
92+
int32_t nVerMaj; // Major version
93+
int32_t nVerMin; // Minor version
94+
const char *sEqType; // Equalizer type
95+
const char *sNotes; // Notes
96+
double fPreamp; // Pre-amplification gain in dB
97+
size_t nFilters; // Number of filters
98+
filter_t *vFilters; // List of filters
9599
} config_t;
96100

97101
/**

include/lsp-plug.in/fmt/config/Serializer.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
2-
* Copyright (C) 2023 Linux Studio Plugins Project <https://lsp-plug.in/>
3-
* (C) 2023 Vladimir Sadovnikov <sadko4u@gmail.com>
2+
* Copyright (C) 2026 Linux Studio Plugins Project <https://lsp-plug.in/>
3+
* (C) 2026 Vladimir Sadovnikov <sadko4u@gmail.com>
44
*
55
* This file is part of lsp-runtime-lib
66
* Created on: 1 мая 2020 г.
@@ -242,6 +242,14 @@ namespace lsp
242242
*/
243243
virtual status_t write_blob(const LSPString *key, const blob_t *v, size_t flags);
244244
virtual status_t write_blob(const char *key, const blob_t *v, size_t flags);
245+
246+
/**
247+
* Write configuration parameter
248+
* @param param configuration parameter
249+
* @return status of operation
250+
*/
251+
status_t write(const config::param_t * param);
252+
status_t write(const config::param_t & param);
245253
};
246254

247255
} /* namespace config */

include/lsp-plug.in/fmt/config/types.h

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
2-
* Copyright (C) 2025 Linux Studio Plugins Project <https://lsp-plug.in/>
3-
* (C) 2025 Vladimir Sadovnikov <sadko4u@gmail.com>
2+
* Copyright (C) 2026 Linux Studio Plugins Project <https://lsp-plug.in/>
3+
* (C) 2026 Vladimir Sadovnikov <sadko4u@gmail.com>
44
*
55
* This file is part of lsp-runtime-lib
66
* Created on: 29 апр. 2020 г.
@@ -93,6 +93,9 @@ namespace lsp
9393
size_t flags; // Serialization flags
9494
value_t v; // Value
9595

96+
protected:
97+
void drop_value();
98+
9699
public:
97100
explicit param_t();
98101
param_t(const param_t &) = delete;
@@ -110,6 +113,7 @@ namespace lsp
110113
inline void swap(param_t &dst) { swap(&dst); };
111114

112115
void clear();
116+
void clear_value();
113117

114118
public:
115119
// Type checking methods
@@ -132,6 +136,19 @@ namespace lsp
132136
bool is_numeric() const;
133137
bool is_simple() const;
134138

139+
// Direct type-checked reading
140+
inline int32_t get_i32() const { return (is_i32()) ? v.i32 : 0; }
141+
inline uint32_t get_u32() const { return (is_u32()) ? v.u32 : 0; }
142+
inline int64_t get_i64() const { return (is_i64()) ? v.i64 : 0; }
143+
inline uint64_t get_u64() const { return (is_u64()) ? v.u64 : 0; }
144+
inline float get_f32() const { return (is_f32()) ? v.f32 : 0.0f; }
145+
inline double get_f64() const { return (is_f64()) ? v.f64 : 0.0; }
146+
inline float get_float() const { return get_f32(); }
147+
inline double get_double() const { return get_f64(); }
148+
inline bool get_bool() const { return (is_bool()) ? v.bval : false; }
149+
inline const char *get_string() const { return (is_str()) ? v.str : NULL; }
150+
inline const blob_t *get_blob() const { return (is_blob()) ? &v.blob : NULL; }
151+
135152
// Precision check
136153
inline bool is_prec_normal() const { return (flags & SF_PREC_MASK) == SF_PREC_NORMAL; }
137154
inline bool is_prec_short() const { return (flags & SF_PREC_MASK) == SF_PREC_SHORT; }
@@ -168,8 +185,14 @@ namespace lsp
168185
inline void set_doublet(double value) { set_f64(value); }
169186
void set_bool(bool value);
170187
bool set_string(const char *value);
188+
bool set_string(const LSPString * value);
189+
bool set_string(const LSPString & value);
171190
bool set_blob(const blob_t *value);
172191
bool set_blob(size_t length, const char *ctype, const char *data);
192+
193+
bool set_name(const char * name);
194+
bool set_name(const LSPString * name);
195+
bool set_name(const LSPString & name);
173196
} param_t;
174197

175198
} /* namespace config */

include/lsp-plug.in/fmt/json/Parser.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
2-
* Copyright (C) 2023 Linux Studio Plugins Project <https://lsp-plug.in/>
3-
* (C) 2023 Vladimir Sadovnikov <sadko4u@gmail.com>
2+
* Copyright (C) 2026 Linux Studio Plugins Project <https://lsp-plug.in/>
3+
* (C) 2026 Vladimir Sadovnikov <sadko4u@gmail.com>
44
*
55
* This file is part of lsp-runtime-lib
66
* Created on: 16 окт. 2019 г.
@@ -192,12 +192,19 @@ namespace lsp
192192
status_t read_double(double *dst);
193193

194194
/**
195-
* Read integer value
195+
* Read signed integer value
196196
* @param dst pointer to store the value
197197
* @return status of operation, STATUS_NULL if value is null
198198
*/
199199
status_t read_int(ssize_t *dst);
200200

201+
/**
202+
* Read unsigned integer value
203+
* @param dst pointer to store the value
204+
* @return status of operation, STATUS_NULL if value is null
205+
*/
206+
status_t read_int(size_t *dst);
207+
201208
/**
202209
* Read boolean value
203210
* @param dst pointer to store the value

include/lsp-plug.in/fmt/obj/Compressor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ namespace lsp
9393
public:
9494
/**
9595
* Set buffer size
96-
* @param float_bits
96+
* @param float_bits number of bits to encode floating-point number (and logarithm of the buffer size)
9797
* @return status of operation
9898
*/
9999
status_t set_buffer_size(size_t float_bits);
@@ -117,4 +117,4 @@ namespace lsp
117117

118118

119119

120-
#endif /* LSP_PL;UG_IN_FMT_OBJ_COMPRESSOR_H_ */
120+
#endif /* LSP_PLUG_IN_FMT_OBJ_COMPRESSOR_H_ */

include/lsp-plug.in/fmt/obj/Decompressor.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ namespace lsp
8383
* Parse compressed OBJ file
8484
* @param handler Wavefront Object file handler
8585
* @param path UTF-8 path to the file
86-
* @param charset character set encoding of the file
8786
* @return status of operation
8887
*/
8988
status_t parse_file(IObjHandler *handler, const char *path);
@@ -92,7 +91,6 @@ namespace lsp
9291
* Parse compressed OBJ file
9392
* @param handler Wavefront Object file handler
9493
* @param path path to the file
95-
* @param charset character set encoding of the file
9694
* @return status of operation
9795
*/
9896
status_t parse_file(IObjHandler *handler, const LSPString *path);
@@ -101,7 +99,6 @@ namespace lsp
10199
* Parse compressed OBJ file
102100
* @param handler Wavefront Object file handler
103101
* @param path path to the file
104-
* @param charset character set encoding of the file
105102
* @return status of operation
106103
*/
107104
status_t parse_file(IObjHandler *handler, const io::Path *path);
@@ -111,7 +108,6 @@ namespace lsp
111108
* @param handler Wavefront Object file handler
112109
* @param is input stream
113110
* @param flags wrap flags
114-
* @param charset character set
115111
* @return status of operation
116112
*/
117113
status_t parse_data(IObjHandler *handler, io::IInStream *is, size_t flags = WRAP_NONE);
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Copyright (C) 2026 Linux Studio Plugins Project <https://lsp-plug.in/>
3+
* (C) 2026 Vladimir Sadovnikov <sadko4u@gmail.com>
4+
*
5+
* This file is part of lsp-runtime-lib
6+
* Created on: 18 янв. 2026 г.
7+
*
8+
* lsp-runtime-lib is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU Lesser General Public License as published by
10+
* the Free Software Foundation, either version 3 of the License, or
11+
* any later version.
12+
*
13+
* lsp-runtime-lib is distributed in the hope that it will be useful,
14+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16+
* GNU Lesser General Public License for more details.
17+
*
18+
* You should have received a copy of the GNU Lesser General Public License
19+
* along with lsp-runtime-lib. If not, see <https://www.gnu.org/licenses/>.
20+
*/
21+
22+
#ifndef LSP_PLUG_IN_FMT_XPM_COLOR_H_
23+
#define LSP_PLUG_IN_FMT_XPM_COLOR_H_
24+
25+
#include <lsp-plug.in/runtime/version.h>
26+
27+
#include <lsp-plug.in/fmt/xpm/ColorItem.h>
28+
29+
namespace lsp
30+
{
31+
namespace xpm
32+
{
33+
/**
34+
* XPM2/XPM3 color
35+
*/
36+
class LSP_RUNTIME_LIB_PUBLIC Color
37+
{
38+
private:
39+
char *sCode;
40+
ColorItem sMono; // XPM: mono visual ('m')
41+
ColorItem sSymbolic; // XPM: symbolic name ('s')
42+
ColorItem sGray4; // XPM: 4-level grayscale ('g4')
43+
ColorItem sGray; // XPM: grayscale with more than 4 levels ('g')
44+
ColorItem sColor; // XPM: color visual
45+
46+
public:
47+
Color() noexcept;
48+
explicit Color(const char * code);
49+
Color(const char * code, size_t len);
50+
Color(const Color & src);
51+
Color(Color && src) noexcept;
52+
~Color();
53+
54+
Color & operator = (const Color & src);
55+
Color & operator = (Color && src) noexcept;
56+
57+
public:
58+
inline const char *code() const noexcept { return sCode; }
59+
bool set_code(const char *code);
60+
bool set_code(const char *code, size_t len);
61+
inline bool has_code() const noexcept { return sCode != NULL; }
62+
bool has_code(const char *code) const noexcept;
63+
void clear_code();
64+
65+
bool set(const Color & src);
66+
67+
inline ColorItem & mono_visual() noexcept { return sMono; }
68+
inline const ColorItem & mono_visual() const noexcept { return sMono; }
69+
70+
inline ColorItem & symbolic_visual()noexcept { return sSymbolic; }
71+
inline const ColorItem & symbolic_visual() const noexcept { return sSymbolic; }
72+
73+
inline ColorItem & gray4_visual() noexcept { return sGray4; }
74+
inline const ColorItem & gray4_visual() const noexcept { return sGray4; }
75+
76+
inline ColorItem & gray_visual() noexcept { return sGray; }
77+
inline const ColorItem & gray_visual() const noexcept { return sGray; }
78+
79+
inline ColorItem & color_visual() noexcept { return sColor; }
80+
inline const ColorItem & color_visual() const noexcept { return sColor; }
81+
82+
public:
83+
void swap(Color & src) noexcept;
84+
void swap(Color * src) noexcept;
85+
};
86+
87+
} /* namespace xpm */
88+
} /* namespace lsp */
89+
90+
91+
#endif /* LSP_PLUG_IN_FMT_XPM_COLOR_H_ */

0 commit comments

Comments
 (0)