Skip to content

Commit a85a3f4

Browse files
authored
Merge pull request #73 from Pascal-Institute/develop
merge
2 parents 96eb743 + 4a896f6 commit a85a3f4

27 files changed

Lines changed: 4272 additions & 1319 deletions

README.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
[![DeepWiki](https://img.shields.io/badge/DeepWiki-Pascal--Institute%2Fpegasus-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==)](https://deepwiki.com/Pascal-Institute/pegasus)
2+
<!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
3+
14
# pegasus
25

36
#### The Image Processing Tool based on Electron framework & sharp npm package
47

5-
<img width="2556" height="1387" alt="image" src="https://github.com/user-attachments/assets/5d760047-deae-43a0-b227-58052a5fcfb4" />
8+
<img width="3071" height="1806" alt="image" src="https://github.com/user-attachments/assets/853e02b8-dffb-44e4-a5f8-d74b81265c3e" />
69

710

811
## 1. Requirements
@@ -27,20 +30,17 @@ npm install --save electron electron-reload electron-rebuild electron-builder sh
2730
npm install -g electron
2831
```
2932

30-
### when electron is not working
31-
```bash
32-
npm install -g electron
33-
```
34-
3533
### npm update (Recommended)
3634

3735
```bash
3836
npm update
3937
```
4038

41-
#### imgkit is local module.
39+
## 2. Coding Convention
40+
41+
### Use Underbar for filename
4242

43-
## 2-1. How to execute
43+
## 3-1. How to execute
4444

4545
### window
4646
```bash
@@ -58,23 +58,23 @@ npm start
5858
electron . --ozone-platform=x11
5959
```
6060

61-
## 2-2. How to build
61+
## 3-2. How to build
6262

6363
```bash
6464
npm run build
6565
```
6666

67-
## 3. Application Specification
67+
## 4. Application Specification
6868

69-
### 3-1. Availiable file extension
69+
### 4-1. Availiable file extension
7070

7171
```bash
7272
png jpg jpeg webp gif bmp ico tiff tif
7373
```
7474

75-
#### 3-2. extension converting
75+
#### 4-2. extension converting
7676

77-
### 3-3. Image Processing
77+
### 4-3. Image Processing
7878

7979
#### resize
8080

@@ -84,4 +84,6 @@ png jpg jpeg webp gif bmp ico tiff tif
8484

8585
#### rotate
8686

87+
#### watermark
88+
8789
#### paint

assets/color_picker.ico

1.67 KB
Binary file not shown.

assets/image_analysis.ico

2.66 KB
Binary file not shown.

css/imgpanel.css

Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
/* ImgKit Scroll Container Styles */
2+
#scroll-container {
3+
position: relative;
4+
width: 100%;
5+
overflow-x: auto;
6+
overflow-y: hidden;
7+
white-space: nowrap;
8+
display: flex;
9+
align-items: center;
10+
gap: 32px;
11+
padding: 128px 80px 48px 80px;
12+
scroll-behavior: smooth;
13+
}
14+
15+
#scroll-container::-webkit-scrollbar {
16+
height: 8px;
17+
}
18+
19+
#scroll-container::-webkit-scrollbar-track {
20+
background: #e0e0e0;
21+
}
22+
23+
#scroll-container::-webkit-scrollbar-thumb {
24+
background: #888;
25+
border-radius: 4px;
26+
}
27+
28+
.scroll-btn {
29+
position: fixed;
30+
top: 50%;
31+
transform: translateY(-50%);
32+
z-index: 1000;
33+
font-size: 2em;
34+
background: #fff;
35+
border: 1px solid #ccc;
36+
border-radius: 50%;
37+
width: 48px;
38+
height: 48px;
39+
opacity: 0.8;
40+
cursor: pointer;
41+
transition: all 0.3s;
42+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
43+
}
44+
45+
.scroll-btn:hover {
46+
opacity: 1;
47+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
48+
}
49+
50+
.scroll-btn:disabled {
51+
opacity: 0.3;
52+
cursor: not-allowed;
53+
}
54+
55+
#scroll-left-btn {
56+
left: 16px;
57+
}
58+
59+
#scroll-right-btn {
60+
right: 16px;
61+
}
62+
63+
/* ImgKit Image Panel Styles */
64+
.imgPanel {
65+
display: inline-flex;
66+
flex-direction: column;
67+
align-items: center;
68+
padding: 18px;
69+
padding-right: 60px;
70+
padding-top: 32px;
71+
padding-bottom: 48px;
72+
background: #fff;
73+
border-radius: 8px;
74+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
75+
transition: all 0.2s;
76+
position: relative;
77+
min-width: 200px;
78+
flex-shrink: 0;
79+
outline: none;
80+
}
81+
82+
.imgPanel:hover {
83+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
84+
}
85+
86+
.imgPanel:focus {
87+
border: 2px solid #555 !important;
88+
box-shadow: 0 4px 16px rgba(68, 68, 68, 0.4) !important;
89+
outline: none;
90+
}
91+
92+
.img-canvas {
93+
max-width: 600px;
94+
max-height: 600px;
95+
border: 1px solid #ddd;
96+
border-radius: 4px;
97+
cursor: pointer;
98+
position: relative;
99+
}
100+
101+
.delete-btn {
102+
position: absolute;
103+
top: 12px;
104+
right: 12px;
105+
width: 24px;
106+
height: 24px;
107+
background: rgba(255, 255, 255, 0.95);
108+
border: 1px solid #ccc;
109+
border-radius: 50%;
110+
cursor: pointer;
111+
padding: 4px;
112+
transition: all 0.2s;
113+
display: flex;
114+
align-items: center;
115+
justify-content: center;
116+
}
117+
118+
.delete-btn:hover {
119+
background: #f44336;
120+
border-color: #f44336;
121+
}
122+
123+
.delete-btn img {
124+
width: 12px;
125+
height: 12px;
126+
object-fit: contain;
127+
}
128+
129+
.name-span {
130+
font-size: 14px;
131+
font-weight: 600;
132+
color: #333;
133+
position: absolute;
134+
left: 20px;
135+
top: 12px;
136+
}
137+
138+
.color-box-container {
139+
display: flex;
140+
flex-direction: column;
141+
gap: 6px;
142+
position: absolute;
143+
right: 12px;
144+
top: 48px;
145+
z-index: 10;
146+
}
147+
148+
.color-box {
149+
width: 24px;
150+
height: 24px;
151+
border: 2px solid #ddd;
152+
border-radius: 4px;
153+
cursor: pointer;
154+
transition: all 0.2s;
155+
}
156+
157+
.color-box:hover {
158+
transform: scale(1.2);
159+
border-color: #999;
160+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
161+
}
162+
163+
.info-text {
164+
font-size: 13px;
165+
color: #666;
166+
position: absolute;
167+
right: 12px;
168+
bottom: 12px;
169+
}
170+
171+
.extension-combo {
172+
padding: 6px 12px;
173+
border: 1px solid #ccc;
174+
border-radius: 4px;
175+
font-size: 13px;
176+
cursor: pointer;
177+
position: absolute;
178+
left: 20px;
179+
bottom: 12px;
180+
}
181+
182+
/* ImgKit Notification Styles */
183+
.imgkit-notification {
184+
position: fixed;
185+
bottom: 24px;
186+
left: 50%;
187+
transform: translateX(-50%);
188+
min-width: 300px;
189+
padding: 16px 24px;
190+
opacity: 0;
191+
border-radius: 8px;
192+
text-align: center;
193+
z-index: 10000;
194+
pointer-events: none;
195+
font-size: 14px;
196+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
197+
}
198+
199+
.imgkit-notification.success {
200+
background-color: #4caf50;
201+
color: #fff;
202+
}
203+
204+
.imgkit-notification.error {
205+
background-color: #f44336;
206+
color: #fff;
207+
}
208+
209+
/* ImgKit Context Menu Styles */
210+
.context-menu {
211+
position: fixed;
212+
background: #fff;
213+
border: 1px solid #ddd;
214+
border-radius: 6px;
215+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
216+
z-index: 10000;
217+
min-width: 140px;
218+
padding: 6px 0;
219+
}
220+
221+
.context-menu-item {
222+
padding: 10px 16px;
223+
cursor: pointer;
224+
transition: background 0.2s;
225+
}
226+
227+
.context-menu-item:hover {
228+
background: #f5f5f5;
229+
}

css/paint_panel.css

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,74 @@
11
#drawBtn:hover,
22
#grayScaleBtn:hover,
33
#tintExecuteBtn:hover,
4-
#watermarkBtn:hover {
4+
#watermarkBtn:hover,
5+
#colorpickerBtn:hover {
56
cursor: pointer;
67
}
8+
9+
.tintBar {
10+
display: flex;
11+
width: 170px;
12+
height: 15px;
13+
}
14+
15+
#tintBox {
16+
margin-left: 20px;
17+
padding: 2px;
18+
border-radius: 5px;
19+
display: flex;
20+
flex-direction: column;
21+
width: 217px;
22+
border: 1px solid black;
23+
position: relative;
24+
}
25+
26+
#tintBox:hover {
27+
background-color: gainsboro;
28+
}
29+
30+
#tintBox:active {
31+
background-color: ghostwhite;
32+
}
33+
34+
#tintExecuteBtn {
35+
border-radius: 5px;
36+
border: none;
37+
position: absolute;
38+
right: 0px;
39+
}
40+
41+
#wrapperBox {
42+
margin-left: 20px;
43+
padding: 2px;
44+
border-radius: 5px;
45+
display: flex;
46+
flex-direction: row;
47+
align-items: center;
48+
width: 217px;
49+
border: 1px solid black;
50+
position: relative;
51+
}
52+
53+
#wrapperBox:hover {
54+
background-color: gainsboro;
55+
}
56+
57+
#wrapperBox:active {
58+
background-color: ghostwhite;
59+
}
60+
61+
#colorpickerBox {
62+
margin-left: 5px;
63+
width: 36px;
64+
height: 36px;
65+
border: 1px solid black;
66+
background-color: black;
67+
}
68+
69+
#colorpickerIndicator {
70+
display: flex;
71+
align-items: center;
72+
flex-direction: column;
73+
margin-left: 5px;
74+
}

0 commit comments

Comments
 (0)