-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathconfig.go
104 lines (94 loc) · 2.49 KB
/
config.go
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
// Copyright (c) 2013-2025 Utkan Güngördü <[email protected]>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package main
import (
"encoding/json"
"os"
)
const (
ConfigDir = ".config/gomics" // relative to user's home
ConfigFile = "config" // relative to config dir
ImageDir = "images" // relative to config dir
PNGCompressionLevel = 5
ThumbnailSize = 128
)
type Config struct {
ZoomMode string
Enlarge bool
Shrink bool
LastDirectory string
Fullscreen bool
WindowWidth int
WindowHeight int
NSkip int
Random bool
Seamless bool
HFlip bool
VFlip bool
DoublePage bool
MangaMode bool
OneWide bool
EmbeddedOrientation bool
Interpolation int
ImageDiffThres float32
SceneScanSkip int
SmartScroll bool
Bookmarks []Bookmark
HideIdleCursor bool
UseBackgroundColor bool
BackgroundColor string
}
func (c *Config) Load(path string) error {
f, err := os.Open(path)
if err != nil {
return err
}
defer f.Close()
d := json.NewDecoder(f)
if err = d.Decode(c); err != nil {
return err
}
return nil
}
func (c *Config) Save(path string) error {
f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)
if err != nil {
return err
}
defer f.Close()
data, err := json.MarshalIndent(c, "", "\t")
if err != nil {
return err
}
_, err = f.Write(data)
return err
}
func (c *Config) Defaults() {
c.ZoomMode = "BestFit"
c.Shrink = true
c.Enlarge = false
c.WindowWidth = 640
c.WindowHeight = 480
c.NSkip = 10
c.Seamless = true
c.Interpolation = 2
c.EmbeddedOrientation = true
c.ImageDiffThres = 0.4
c.SceneScanSkip = 5
c.SmartScroll = true
c.HideIdleCursor = true
c.UseBackgroundColor = false
c.BackgroundColor = "#000000"
}