annotate foosdk/sdk/foobar2000/shared/win32_misc.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 class win32_font {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 win32_font(HFONT p_initval) : m_font(p_initval) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 win32_font() : m_font(NULL) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 ~win32_font() {release();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 void release() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 HFONT temp = detach();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 if (temp != NULL) DeleteObject(temp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 void set(HFONT p_font) {release(); m_font = p_font;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 HFONT get() const {return m_font;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 HFONT detach() {return pfc::replace_t(m_font,(HFONT)NULL);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 void create(const t_font_description & p_desc) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 SetLastError(NO_ERROR);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 HFONT temp = p_desc.create();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 if (temp == NULL) throw exception_win32(GetLastError());
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 set(temp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 bool is_valid() const {return m_font != NULL;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 win32_font(const win32_font&) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 void operator=(const win32_font &) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 HFONT m_font;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 };