Merge work in autoscroll from 'master' into sdl2.0

This commit is contained in:
Pere Pujal i Carabantes 2022-04-26 00:25:29 +02:00
commit bf73b3679b
75 changed files with 34464 additions and 43544 deletions

3
data/brushes/dog.dat Normal file
View file

@ -0,0 +1,3 @@
frames=2
directional
spacing=48

BIN
data/brushes/dog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -7,7 +7,7 @@ Various contributors (see below, and AUTHORS.txt)
http://www.tuxpaint.org/ http://www.tuxpaint.org/
2022.March.17 (0.9.28) 2022.April.14 (0.9.28)
* Improvements to "Paint" and "Lines" tools: * Improvements to "Paint" and "Lines" tools:
------------------------------------------ ------------------------------------------
* Brush spacing may now be altered within Tux Paint. * Brush spacing may now be altered within Tux Paint.
@ -128,6 +128,20 @@ http://www.tuxpaint.org/
you scale down (similar to "Panels", but with non-integer scaling). you scale down (similar to "Panels", but with non-integer scaling).
Bill Kendrick <bill@newbreedsoftware.com> Bill Kendrick <bill@newbreedsoftware.com>
* New Brushes:
------------
* "Dog" animated directional brush.
(Modified version of art from the "oneko" package by Tatsuya Kato.
https://github.com/tie/oneko)
Brushified by Bill Kendrick <bill@newbreedsoftware.com>
* Other Improvements:
-------------------
* The up & down scroll buttons now auto-repeat if you click/tap and
hold them in the "Tools" section, and "Open", "New", and "Slideshow"
dialogs. (For https://sourceforge.net/p/tuxpaint/feature-requests/173/)
Bill Kendrick <bill@newbreedsoftware.com>
* Localization Updates: * Localization Updates:
--------------------- ---------------------
* Albanian translation * Albanian translation
@ -196,6 +210,12 @@ http://www.tuxpaint.org/
saved drawing. (Affected Windows only.) saved drawing. (Affected Windows only.)
Bill Kendrick <bill@newbreedsoftware.com> Bill Kendrick <bill@newbreedsoftware.com>
* Avoid crashes when coming across unexpected Label data stored within
a saved PNG image.
(h/t Donny Sianipar for the report & sample image)
Bill Kendrick <bill@newbreedsoftware.com> and
TOYAMA Shin-ichi <dolphin6k@wmail.plala.or.jp>
* Ports & Building: * Ports & Building:
----------------- -----------------
* Windows * Windows
@ -238,7 +258,8 @@ http://www.tuxpaint.org/
* Documentation updates: * Documentation updates:
--------------------- ---------------------
* Added some styling, use of HTML semantic tags, call-outs for notes, * Added some styling, use of HTML semantic tags, call-outs for notes,
improved printed output, and other improvements to the README docs. improved printed output, and other improvements to the README and
OPTIONS docs.
Bill Kendrick <bill@newbreedsoftware.com> Bill Kendrick <bill@newbreedsoftware.com>
* macOS Apple Silicon and Universal Binary build instructions * macOS Apple Silicon and Universal Binary build instructions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,9 +5,7 @@
Copyright © 2007-2022 by various contributors; see AUTHORS.txt. Copyright © 2007-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
January 20, 2022 March 31, 2022
----------------------------------------------------------------------
About PNGs About PNGs
@ -35,48 +33,56 @@ How To Make PNGs
GIMP & Krita GIMP & Krita
Excellent tools with which to create PNG images for use in Tux Paint are Excellent tools with which to create PNG images for use in Tux
GIMP and Krita, both high-quality Open Source interactive drawing and Paint are GIMP and Krita, both high-quality Open Source
photo editing programs. interactive drawing and photo editing programs.
It is likely that one or both are already installed on your system. If It is likely that one or both are already installed on your
not, they should be readily available from your Linux distribution's system. If not, they should be readily available from your Linux
software repository. If not, or to learn more, visit http://www.gimp.org/ distribution's software repository. If not, or to learn more,
and http://www.krita.org/, respectively. visit http://www.gimp.org/ and http://www.krita.org/,
respectively.
Command-line Tools Command-line Tools
NetPBM NetPBM
The Portable Bitmap tools (collectively known as "NetPBM") is a collection The Portable Bitmap tools (collectively known as
of Open Source command-line tools which convert to and from various "NetPBM") is a collection of Open Source command-line
formats, including GIF, TIFF, BMP, PNG, and many more. tools which convert to and from various formats,
including GIF, TIFF, BMP, PNG, and many more.
It is possible that it's already installed on your system. If not, they it It is possible that it's already installed on your
be readily available from your Linux distribution's software repository. system. If not, they it be readily available from
If not, or to learn more, visit http://netpbm.sourceforge.net/. your Linux distribution's software repository. If
not, or to learn more, visit
http://netpbm.sourceforge.net/.
cjpeg/djpeg cjpeg/djpeg
The "cjpeg" and "djpeg" command-line programs convert between the NetPBM The "cjpeg" and "djpeg" command-line programs convert
Portable Any Map (PNM) format and JPEGs. It is possible that it's already between the NetPBM Portable Any Map (PNM) format and
installed on your system. If not, they it be readily available from your JPEGs. It is possible that it's already installed on
Linux distribution's software repository. If not, or to learn more, visit your system. If not, they it be readily available
from your Linux distribution's software repository.
If not, or to learn more, visit
https://jpegclub.org/. https://jpegclub.org/.
Windows Users Proprietary Software for Windows
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
http://www.adobe.com/products/illustrator.html
* Paint Shop Pro (Corel) — https://www.paintshoppro.com/ * Paint Shop Pro (Corel) — https://www.paintshoppro.com/
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html * Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html
* PIXresizer (Bluefive software) — * PIXresizer (Bluefive software) —
http://bluefive.pair.com/pixresizer.htm http://bluefive.pair.com/pixresizer.htm
Macintosh Users Macintosh Users
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* GraphicConverter (Lemke Software) — * GraphicConverter (Lemke Software) —
https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/ https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html http://www.adobe.com/products/illustrator.html
* Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html

View file

@ -6,8 +6,9 @@
Copyright © 2002-2022 by various contributors; see AUTHORS.txt. Copyright © 2002-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
@TuxPaintTweets on Twitter @TuxPaintTweets on Twitter
Tux Paint on Tumblr
March 1, 2022 March 18, 2022
+----------------------------------------------------+ +----------------------------------------------------+
|Table of Contents | |Table of Contents |
@ -1089,3 +1090,4 @@ Importing Pictures Manually
* "Microsoft" and "Windows" are registered trademarks of Microsoft Corp. * "Microsoft" and "Windows" are registered trademarks of Microsoft Corp.
* "Apple" and "macOS" are registered trademarks of Apple Inc. * "Apple" and "macOS" are registered trademarks of Apple Inc.
* "Twitter" is a registered trademark of Twitter, Inc. * "Twitter" is a registered trademark of Twitter, Inc.
* "Tumblr" is a registered trademark of Tumblr, Inc.

View file

@ -5,9 +5,7 @@
Copyright © 2019-2022 by various contributors; see AUTHORS.txt. Copyright © 2019-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
January 20, 2022 March 31, 2022
----------------------------------------------------------------------
Tux Paint responds to the following signals (which can be sent to the Tux Paint responds to the following signals (which can be sent to the
program's process via `kill` or `killall`, for example). program's process via `kill` or `killall`, for example).
@ -27,13 +25,13 @@
respectively), whether or not to overwrite the existing drawing, respectively), whether or not to overwrite the existing drawing,
or save to a new file. or save to a new file.
Note: From other parts of the interface, the signal is currently Example: killall tuxpaint
💡 Note: From other parts of the interface, the signal is currently
interpreted as a request to go back (e.g., from the "New" dialog interpreted as a request to go back (e.g., from the "New" dialog
back to the main interface), as if a "Back" button in Tux Paint back to the main interface), as if a "Back" button in Tux Paint
were clicked, or the [Esc] was key pressed. were clicked, or the [Esc] was key pressed.
Example: killall tuxpaint
SIGUSR1 & SIGUSR2 SIGUSR1 & SIGUSR2
Tux Paint responds by setting its auto-save option (as if it had Tux Paint responds by setting its auto-save option (as if it had
@ -47,9 +45,9 @@
So, from the main interface, Tux Paint should quit almost So, from the main interface, Tux Paint should quit almost
immediately, with no questions asked. immediately, with no questions asked.
Note: From other parts of the interface, unfortunately, Tux Paint
will go back one level in the interface. Therefore, at this time,
it may be necessary to send this signal to Tux Paint a few times,
for it to quit completely.
Example: killall -s SIGUSR1 tuxpaint Example: killall -s SIGUSR1 tuxpaint
💡 Note: From other parts of the interface, unfortunately, Tux
Paint will go back one level in the interface. Therefore, at this
time, it may be necessary to send this signal to Tux Paint a few
times, for it to quit completely.

View file

@ -7,8 +7,6 @@
January 20, 2022 January 20, 2022
----------------------------------------------------------------------
About SVGs About SVGs
SVG (Scalable Vector Graphics) is an open standard used to describe SVG (Scalable Vector Graphics) is an open standard used to describe
@ -22,13 +20,17 @@ About SVGs
How to make SVGs How to make SVGs
An excellent tool with which to create SVG images for use in Tux Paint is An excellent tool with which to create SVG images for use in Tux Paint is
Inkscape, a high-quality Open Source interactive drawing program. Inkscape, a high-quality Open Source interactive drawing program available
for Windows, macOS, and Linux. There are also other applications that can
produce SVGs, both free/open source, and commerical/proprietary.
It is likely that is already installed on your system. If not, it should Open Source
be readily available from your Linux distribution's software repository. * Inkscape — http://www.inkscape.org/
If not, or to learn more, visit http://www.inkscape.org/, respectively. * Karbon — https://calligra.org/karbon/
Mac and Windows users Proprietary
* CorelDRAW (Corel) — https://www.coreldraw.com/en/
* CorelDRAW (Corel) — http://www.corel.com/ * Illustrator (Adobe) —
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html http://www.adobe.com/products/illustrator.html
* Boxy SVG — https://boxy-svg.com/
* Sketch (Sketch B.V.) — https://boxy-svg.com/

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,12 +5,82 @@
Tux Paint PNG Documentation </title> Tux Paint PNG Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -26,12 +96,15 @@
</p> </p>
<p> <p>
January 20, 2022 </p> March 31, 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>About PNGs</h2> <h1>About PNGs</h1>
</header>
<p> <p>
PNG is the Portable Network Graphic format. It is an open standard, not burdened by patents (like GIFs). It is a highly compressed format (though not "lossy" like JPEGs - lossiness allows files to be much smaller, but introduces 'mistakes' in the image when saved), and supports 24-bit color (16.7 million colors) as well as a full "alpha channel" - that is, each pixel can have a varying degree of transparency. </p> PNG is the Portable Network Graphic format. It is an open standard, not burdened by patents (like GIFs). It is a highly compressed format (though not "lossy" like JPEGs - lossiness allows files to be much smaller, but introduces 'mistakes' in the image when saved), and supports 24-bit color (16.7 million colors) as well as a full "alpha channel" - that is, each pixel can have a varying degree of transparency. </p>
@ -44,32 +117,47 @@
<p> <p>
Support for many colors allows photo-quality "rubber stamp" images to be used in Tux Paint, and alpha transparency allows for high-quality brushes. </p> Support for many colors allows photo-quality "rubber stamp" images to be used in Tux Paint, and alpha transparency allows for high-quality brushes. </p>
</section>
<section class="indent">
<header>
<h2>How To Make PNGs</h2> <h2>How To Make PNGs</h2>
</header>
<p>The following is a very <em>brief</em> list of ways to create PNGs or convert existing images into PNGs. <p>The following is a very <em>brief</em> list of ways to create PNGs or convert existing images into PNGs.
<h3>GIMP &amp; Krita</h3> <dl>
<dt>GIMP &amp; Krita</dt>
<dd>
<p> <p>
Excellent tools with which to create PNG images for use in Tux Paint are GIMP and Krita, both high-quality Open Source interactive drawing and photo editing programs. </p> Excellent tools with which to create PNG images for use in Tux Paint are GIMP and Krita, both high-quality Open Source interactive drawing and photo editing programs. </p>
<p> <p>
It is likely that one or both are already installed on your system. If not, they should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.gimp.org/">http://www.gimp.org/</a> and <a href="http://www.krita.org/">http://www.krita.org/</a>, respectively. </p> It is likely that one or both are already installed on your system. If not, they should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.gimp.org/">http://www.gimp.org/</a> and <a href="http://www.krita.org/">http://www.krita.org/</a>, respectively. </p>
</dd>
<h3>Command-line Tools</h3> <dt>Command-line Tools</dt>
<dd>
<h4>NetPBM</h4> <dl>
<dt>NetPBM</dt>
<dd>
<p> <p>
The Portable Bitmap tools (collectively known as "NetPBM") is a collection of Open Source command-line tools which convert to and from various formats, including GIF, TIFF, BMP, PNG, and many more. </p> The Portable Bitmap tools (collectively known as "NetPBM") is a collection of Open Source command-line tools which convert to and from various formats, including GIF, TIFF, BMP, PNG, and many more. </p>
<p> <p>
It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p> It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p>
</dd>
<h4>cjpeg/djpeg</h4> <dt>cjpeg/djpeg</dt>
<dd>
<p> <p>
The "cjpeg" and "djpeg" command-line programs convert between the NetPBM Portable Any Map (PNM) format and JPEGs. The "cjpeg" and "djpeg" command-line programs convert between the NetPBM Portable Any Map (PNM) format and JPEGs.
It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p> It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p>
</dd>
</dl>
</dd>
<h3>Windows Users</h3> <dt>Proprietary Software for Windows</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -92,8 +180,10 @@
&mdash; &mdash;
<a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a> <a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a>
</ul> </ul>
</dd>
<h3>Macintosh Users</h3> <dt>Macintosh Users</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -112,6 +202,9 @@
&mdash; &mdash;
<a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a> <a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a>
</ul> </ul>
</dd>
</dl>
</section>
</body> </body>
</html> </html>

View file

@ -21,15 +21,17 @@
} }
div.keeptogether { page-break-inside: avoid; } div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; } section h1 { font-size: 2em; }
h1, h2, h3, h4 { font-family: sans; } h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; } h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; } h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; } h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; } h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; } h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; } h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; } h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; } h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt { dt {
font-size: large; font-size: large;
color: #404; color: #404;
@ -60,6 +62,9 @@
section.indent dl p { section.indent dl p {
margin-left: 0; margin-left: 0;
} }
p + ul {
margin-left: 2em;
}
@media print { @media print {
p { p {
@ -92,11 +97,12 @@
<p> <p>
Copyright &copy; 2002-2022 by various contributors; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/> Copyright &copy; 2002-2022 by various contributors; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/>
<a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/> <a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/>
<a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a> <a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a><br/>
<a href="https://tuxpaint.tumblr.com/">Tux Paint on Tumblr</a>
</p> </p>
<p> <p>
March 1, 2022 </p> March 18, 2022 </p>
</center> </center>
</header> </header>
<table border="2" <table border="2"
@ -1602,6 +1608,7 @@
<li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li> <li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li>
<li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li> <li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li>
<li>"Twitter" is a registered trademark of Twitter, Inc.</li> <li>"Twitter" is a registered trademark of Twitter, Inc.</li>
<li>"Tumblr" is a registered trademark of Tumblr, Inc.</li>
</ul> </ul>
</section> </section>
</footer> </footer>

View file

@ -5,13 +5,83 @@
Tux Paint Signals Documentation </title> Tux Paint Signals Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<center> <center>
<header>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
width="205" width="205"
@ -26,11 +96,12 @@
</p> </p>
<p> <p>
January 20, 2022 </p> March 31, 2022 </p>
</header>
</center> </center>
</section>
<hr> <section>
<p> <p>
Tux Paint responds to the following signals (which can be sent to the program's process via `<code>kill</code>` or `<code>killall</code>`, for example). </p> Tux Paint responds to the following signals (which can be sent to the program's process via `<code>kill</code>` or `<code>killall</code>`, for example). </p>
@ -46,11 +117,11 @@
<p> <p>
From the main interface, Tux Paint will prompt whether or not you wish to quit, and (unless overridden by the auto-save option, e.g. "<code>--autosave</code>") if you'd like to save the current drawing (if unsaved), and if so, and it's a modified version of an existing drawing (unless overridden by the options to save over old images, or always save new images; e.g. "<code>--saveover</code>" and "<code>--saveovernew</code>", respectively), whether or not to overwrite the existing drawing, or save to a new file. </p> From the main interface, Tux Paint will prompt whether or not you wish to quit, and (unless overridden by the auto-save option, e.g. "<code>--autosave</code>") if you'd like to save the current drawing (if unsaved), and if so, and it's a modified version of an existing drawing (unless overridden by the options to save over old images, or always save new images; e.g. "<code>--saveover</code>" and "<code>--saveovernew</code>", respectively), whether or not to overwrite the existing drawing, or save to a new file. </p>
<p>
<b>Note:</b> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
<p> <p>
Example: <code>killall tuxpaint</code> </p> Example: <code>killall tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
</dd> </dd>
<dt> <dt>
@ -64,12 +135,13 @@
<p> <p>
So, from the main interface, Tux Paint should quit almost immediately, with no questions asked. </p> So, from the main interface, Tux Paint should quit almost immediately, with no questions asked. </p>
<p>
<b>Note:</b> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
<p> <p>
Example: <code>killall -s SIGUSR1 tuxpaint</code> </p> Example: <code>killall -s SIGUSR1 tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
</dd> </dd>
</dl> </dl>
</section>
</body> </body>
</html> </html>

View file

@ -5,12 +5,84 @@
Tux Paint SVG Documentation </title> Tux Paint SVG Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<!-- Title -->
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -28,36 +100,68 @@
<p> <p>
January 20, 2022 </p> January 20, 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>About SVGs</h2> <h1>About SVGs</h1>
</header>
<p> <p>
SVG (Scalable Vector Graphics) is an open standard used to describe two-dimensional vector graphics. It is great for diagrams and shapes, while PNGs are better for photographs. SVG files are a bit like instructions on how to make an image. This means that they can be resized without looking pixelated or blocky. </p> SVG (Scalable Vector Graphics) is an open standard used to describe two-dimensional vector graphics. It is great for diagrams and shapes, while PNGs are better for photographs. SVG files are a bit like instructions on how to make an image. This means that they can be resized without looking pixelated or blocky. </p>
<p> <p>
For more information, visit: <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p> For more information, visit: <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p>
</section>
<h2>How to make SVGs</h2> <section class="indent">
<header>
<h1>How to make SVGs</h1>
</header>
<p> <p>
An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program. </p> An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program available for Windows, macOS, and Linux. There are also other applications that can produce SVGs, both free/open source, and commerical/proprietary. </p>
<p> <dl>
It is likely that is already installed on your system. If not, it should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.inkscape.org/">http://www.inkscape.org/</a>, respectively. </p> <dt><strong>Open Source</strong></dt>
<dd>
<h2>Mac and Windows users</h2> <ul>
<li> <cite>Inkscape</cite>
&mdash;
<a href="http://www.inkscape.org/">http://www.inkscape.org/</a>
</li>
<li> <cite>Karbon</cite>
&mdash;
<a href="https://calligra.org/karbon/">https://calligra.org/karbon/</a>
</li>
</ul>
</dd>
<dt><strong>Proprietary</strong></dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
&mdash; &mdash;
<a href="http://www.corel.com/">http://www.corel.com/</a> <a href="https://www.coreldraw.com/en/">https://www.coreldraw.com/en/</a>
</li>
<li> <cite>Illustrator</cite> <li> <cite>Illustrator</cite>
(Adobe) (Adobe)
&mdash; &mdash;
<a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a> <a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a>
</li>
<li> <cite>Boxy SVG</cite>
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
<li> <cite>Sketch</cite>
(Sketch B.V.)
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
</ul> </ul>
</dl>
</section>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,9 +5,7 @@
Copyright © 2007-2022 by various contributors; see AUTHORS.txt. Copyright © 2007-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
enero 20, 2022 marzo 31, 2022
----------------------------------------------------------------------
About PNGs About PNGs
@ -35,48 +33,56 @@ How To Make PNGs
GIMP & Krita GIMP & Krita
Excellent tools with which to create PNG images for use in Tux Paint are Excellent tools with which to create PNG images for use in Tux
GIMP and Krita, both high-quality Open Source interactive drawing and Paint are GIMP and Krita, both high-quality Open Source
photo editing programs. interactive drawing and photo editing programs.
It is likely that one or both are already installed on your system. If It is likely that one or both are already installed on your
not, they should be readily available from your Linux distribution's system. If not, they should be readily available from your Linux
software repository. If not, or to learn more, visit http://www.gimp.org/ distribution's software repository. If not, or to learn more,
and http://www.krita.org/, respectively. visit http://www.gimp.org/ and http://www.krita.org/,
respectively.
Command-line Tools Command-line Tools
NetPBM NetPBM
The Portable Bitmap tools (collectively known as "NetPBM") is a collection The Portable Bitmap tools (collectively known as
of Open Source command-line tools which convert to and from various "NetPBM") is a collection of Open Source command-line
formats, including GIF, TIFF, BMP, PNG, and many more. tools which convert to and from various formats,
including GIF, TIFF, BMP, PNG, and many more.
It is possible that it's already installed on your system. If not, they it It is possible that it's already installed on your
be readily available from your Linux distribution's software repository. system. If not, they it be readily available from
If not, or to learn more, visit http://netpbm.sourceforge.net/. your Linux distribution's software repository. If
not, or to learn more, visit
http://netpbm.sourceforge.net/.
cjpeg/djpeg cjpeg/djpeg
The "cjpeg" and "djpeg" command-line programs convert between the NetPBM The "cjpeg" and "djpeg" command-line programs convert
Portable Any Map (PNM) format and JPEGs. It is possible that it's already between the NetPBM Portable Any Map (PNM) format and
installed on your system. If not, they it be readily available from your JPEGs. It is possible that it's already installed on
Linux distribution's software repository. If not, or to learn more, visit your system. If not, they it be readily available
from your Linux distribution's software repository.
If not, or to learn more, visit
https://jpegclub.org/. https://jpegclub.org/.
Windows Users Proprietary Software for Windows
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
http://www.adobe.com/products/illustrator.html
* Paint Shop Pro (Corel) — https://www.paintshoppro.com/ * Paint Shop Pro (Corel) — https://www.paintshoppro.com/
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html * Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html
* PIXresizer (Bluefive software) — * PIXresizer (Bluefive software) —
http://bluefive.pair.com/pixresizer.htm http://bluefive.pair.com/pixresizer.htm
Macintosh Users Macintosh Users
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* GraphicConverter (Lemke Software) — * GraphicConverter (Lemke Software) —
https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/ https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html http://www.adobe.com/products/illustrator.html
* Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html

View file

@ -6,8 +6,9 @@
Copyright © 2002-2022 by various contributors; see AUTHORS.txt. Copyright © 2002-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
@TuxPaintTweets on Twitter @TuxPaintTweets on Twitter
Tux Paint on Tumblr
marzo 1, 2022 marzo 18, 2022
+----------------------------------------------------+ +----------------------------------------------------+
|Table of Contents | |Table of Contents |
@ -1089,3 +1090,4 @@ Importing Pictures Manually
* "Microsoft" and "Windows" are registered trademarks of Microsoft Corp. * "Microsoft" and "Windows" are registered trademarks of Microsoft Corp.
* "Apple" and "macOS" are registered trademarks of Apple Inc. * "Apple" and "macOS" are registered trademarks of Apple Inc.
* "Twitter" is a registered trademark of Twitter, Inc. * "Twitter" is a registered trademark of Twitter, Inc.
* "Tumblr" is a registered trademark of Tumblr, Inc.

View file

@ -5,9 +5,7 @@
Copyright © 2019-2022 by various contributors; see AUTHORS.txt. Copyright © 2019-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
enero 20, 2022 marzo 31, 2022
----------------------------------------------------------------------
Tux Paint responds to the following signals (which can be sent to the Tux Paint responds to the following signals (which can be sent to the
program's process via `kill` or `killall`, for example). program's process via `kill` or `killall`, for example).
@ -27,13 +25,13 @@
respectively), whether or not to overwrite the existing drawing, respectively), whether or not to overwrite the existing drawing,
or save to a new file. or save to a new file.
Note: From other parts of the interface, the signal is currently Example: killall tuxpaint
💡 Note: From other parts of the interface, the signal is currently
interpreted as a request to go back (e.g., from the "New" dialog interpreted as a request to go back (e.g., from the "New" dialog
back to the main interface), as if a "Back" button in Tux Paint back to the main interface), as if a "Back" button in Tux Paint
were clicked, or the [Esc] was key pressed. were clicked, or the [Esc] was key pressed.
Example: killall tuxpaint
SIGUSR1 & SIGUSR2 SIGUSR1 & SIGUSR2
Tux Paint responds by setting its auto-save option (as if it had Tux Paint responds by setting its auto-save option (as if it had
@ -47,9 +45,9 @@
So, from the main interface, Tux Paint should quit almost So, from the main interface, Tux Paint should quit almost
immediately, with no questions asked. immediately, with no questions asked.
Note: From other parts of the interface, unfortunately, Tux Paint
will go back one level in the interface. Therefore, at this time,
it may be necessary to send this signal to Tux Paint a few times,
for it to quit completely.
Example: killall -s SIGUSR1 tuxpaint Example: killall -s SIGUSR1 tuxpaint
💡 Note: From other parts of the interface, unfortunately, Tux
Paint will go back one level in the interface. Therefore, at this
time, it may be necessary to send this signal to Tux Paint a few
times, for it to quit completely.

View file

@ -7,8 +7,6 @@
enero 20, 2022 enero 20, 2022
----------------------------------------------------------------------
About SVGs About SVGs
SVG (Scalable Vector Graphics) is an open standard used to describe SVG (Scalable Vector Graphics) is an open standard used to describe
@ -22,13 +20,17 @@ About SVGs
How to make SVGs How to make SVGs
An excellent tool with which to create SVG images for use in Tux Paint is An excellent tool with which to create SVG images for use in Tux Paint is
Inkscape, a high-quality Open Source interactive drawing program. Inkscape, a high-quality Open Source interactive drawing program available
for Windows, macOS, and Linux. There are also other applications that can
produce SVGs, both free/open source, and commerical/proprietary.
It is likely that is already installed on your system. If not, it should Open Source
be readily available from your Linux distribution's software repository. * Inkscape — http://www.inkscape.org/
If not, or to learn more, visit http://www.inkscape.org/, respectively. * Karbon — https://calligra.org/karbon/
Mac and Windows users Proprietary
* CorelDRAW (Corel) — https://www.coreldraw.com/en/
* CorelDRAW (Corel) — http://www.corel.com/ * Illustrator (Adobe) —
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html http://www.adobe.com/products/illustrator.html
* Boxy SVG — https://boxy-svg.com/
* Sketch (Sketch B.V.) — https://boxy-svg.com/

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,12 +5,82 @@
Tux Paint PNG Documentation </title> Tux Paint PNG Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -26,12 +96,15 @@
</p> </p>
<p> <p>
enero 20, 2022 </p> marzo 31, 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>About PNGs</h2> <h1>About PNGs</h1>
</header>
<p> <p>
PNG is the Portable Network Graphic format. It is an open standard, not burdened by patents (like GIFs). It is a highly compressed format (though not "lossy" like JPEGs - lossiness allows files to be much smaller, but introduces 'mistakes' in the image when saved), and supports 24-bit color (16.7 million colors) as well as a full "alpha channel" - that is, each pixel can have a varying degree of transparency. </p> PNG is the Portable Network Graphic format. It is an open standard, not burdened by patents (like GIFs). It is a highly compressed format (though not "lossy" like JPEGs - lossiness allows files to be much smaller, but introduces 'mistakes' in the image when saved), and supports 24-bit color (16.7 million colors) as well as a full "alpha channel" - that is, each pixel can have a varying degree of transparency. </p>
@ -44,32 +117,47 @@
<p> <p>
Support for many colors allows photo-quality "rubber stamp" images to be used in Tux Paint, and alpha transparency allows for high-quality brushes. </p> Support for many colors allows photo-quality "rubber stamp" images to be used in Tux Paint, and alpha transparency allows for high-quality brushes. </p>
</section>
<section class="indent">
<header>
<h2>How To Make PNGs</h2> <h2>How To Make PNGs</h2>
</header>
<p>The following is a very <em>brief</em> list of ways to create PNGs or convert existing images into PNGs. <p>The following is a very <em>brief</em> list of ways to create PNGs or convert existing images into PNGs.
<h3>GIMP &amp; Krita</h3> <dl>
<dt>GIMP &amp; Krita</dt>
<dd>
<p> <p>
Excellent tools with which to create PNG images for use in Tux Paint are GIMP and Krita, both high-quality Open Source interactive drawing and photo editing programs. </p> Excellent tools with which to create PNG images for use in Tux Paint are GIMP and Krita, both high-quality Open Source interactive drawing and photo editing programs. </p>
<p> <p>
It is likely that one or both are already installed on your system. If not, they should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.gimp.org/">http://www.gimp.org/</a> and <a href="http://www.krita.org/">http://www.krita.org/</a>, respectively. </p> It is likely that one or both are already installed on your system. If not, they should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.gimp.org/">http://www.gimp.org/</a> and <a href="http://www.krita.org/">http://www.krita.org/</a>, respectively. </p>
</dd>
<h3>Command-line Tools</h3> <dt>Command-line Tools</dt>
<dd>
<h4>NetPBM</h4> <dl>
<dt>NetPBM</dt>
<dd>
<p> <p>
The Portable Bitmap tools (collectively known as "NetPBM") is a collection of Open Source command-line tools which convert to and from various formats, including GIF, TIFF, BMP, PNG, and many more. </p> The Portable Bitmap tools (collectively known as "NetPBM") is a collection of Open Source command-line tools which convert to and from various formats, including GIF, TIFF, BMP, PNG, and many more. </p>
<p> <p>
It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p> It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p>
</dd>
<h4>cjpeg/djpeg</h4> <dt>cjpeg/djpeg</dt>
<dd>
<p> <p>
The "cjpeg" and "djpeg" command-line programs convert between the NetPBM Portable Any Map (PNM) format and JPEGs. The "cjpeg" and "djpeg" command-line programs convert between the NetPBM Portable Any Map (PNM) format and JPEGs.
It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p> It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p>
</dd>
</dl>
</dd>
<h3>Windows Users</h3> <dt>Proprietary Software for Windows</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -92,8 +180,10 @@
&mdash; &mdash;
<a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a> <a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a>
</ul> </ul>
</dd>
<h3>Macintosh Users</h3> <dt>Macintosh Users</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -112,6 +202,9 @@
&mdash; &mdash;
<a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a> <a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a>
</ul> </ul>
</dd>
</dl>
</section>
</body> </body>
</html> </html>

View file

@ -21,15 +21,17 @@
} }
div.keeptogether { page-break-inside: avoid; } div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; } section h1 { font-size: 2em; }
h1, h2, h3, h4 { font-family: sans; } h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; } h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; } h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; } h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; } h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; } h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; } h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; } h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; } h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt { dt {
font-size: large; font-size: large;
color: #404; color: #404;
@ -60,6 +62,9 @@
section.indent dl p { section.indent dl p {
margin-left: 0; margin-left: 0;
} }
p + ul {
margin-left: 2em;
}
@media print { @media print {
p { p {
@ -92,11 +97,12 @@
<p> <p>
Copyright &copy; 2002-2022 by various contributors; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/> Copyright &copy; 2002-2022 by various contributors; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/>
<a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/> <a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/>
<a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a> <a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a><br/>
<a href="https://tuxpaint.tumblr.com/">Tux Paint on Tumblr</a>
</p> </p>
<p> <p>
marzo 1, 2022 </p> marzo 18, 2022 </p>
</center> </center>
</header> </header>
<table border="2" <table border="2"
@ -1602,6 +1608,7 @@
<li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li> <li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li>
<li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li> <li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li>
<li>"Twitter" is a registered trademark of Twitter, Inc.</li> <li>"Twitter" is a registered trademark of Twitter, Inc.</li>
<li>"Tumblr" is a registered trademark of Tumblr, Inc.</li>
</ul> </ul>
</section> </section>
</footer> </footer>

View file

@ -5,13 +5,83 @@
Tux Paint Signals Documentation </title> Tux Paint Signals Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<center> <center>
<header>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
width="205" width="205"
@ -26,11 +96,12 @@
</p> </p>
<p> <p>
enero 20, 2022 </p> marzo 31, 2022 </p>
</header>
</center> </center>
</section>
<hr> <section>
<p> <p>
Tux Paint responds to the following signals (which can be sent to the program's process via `<code>kill</code>` or `<code>killall</code>`, for example). </p> Tux Paint responds to the following signals (which can be sent to the program's process via `<code>kill</code>` or `<code>killall</code>`, for example). </p>
@ -46,11 +117,11 @@
<p> <p>
From the main interface, Tux Paint will prompt whether or not you wish to quit, and (unless overridden by the auto-save option, e.g. "<code>--autosave</code>") if you'd like to save the current drawing (if unsaved), and if so, and it's a modified version of an existing drawing (unless overridden by the options to save over old images, or always save new images; e.g. "<code>--saveover</code>" and "<code>--saveovernew</code>", respectively), whether or not to overwrite the existing drawing, or save to a new file. </p> From the main interface, Tux Paint will prompt whether or not you wish to quit, and (unless overridden by the auto-save option, e.g. "<code>--autosave</code>") if you'd like to save the current drawing (if unsaved), and if so, and it's a modified version of an existing drawing (unless overridden by the options to save over old images, or always save new images; e.g. "<code>--saveover</code>" and "<code>--saveovernew</code>", respectively), whether or not to overwrite the existing drawing, or save to a new file. </p>
<p>
<b>Note:</b> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
<p> <p>
Example: <code>killall tuxpaint</code> </p> Example: <code>killall tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
</dd> </dd>
<dt> <dt>
@ -64,12 +135,13 @@
<p> <p>
So, from the main interface, Tux Paint should quit almost immediately, with no questions asked. </p> So, from the main interface, Tux Paint should quit almost immediately, with no questions asked. </p>
<p>
<b>Note:</b> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
<p> <p>
Example: <code>killall -s SIGUSR1 tuxpaint</code> </p> Example: <code>killall -s SIGUSR1 tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
</dd> </dd>
</dl> </dl>
</section>
</body> </body>
</html> </html>

View file

@ -5,12 +5,84 @@
Tux Paint SVG Documentation </title> Tux Paint SVG Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<!-- Title -->
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -28,36 +100,68 @@
<p> <p>
enero 20, 2022 </p> enero 20, 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>About SVGs</h2> <h1>About SVGs</h1>
</header>
<p> <p>
SVG (Scalable Vector Graphics) is an open standard used to describe two-dimensional vector graphics. It is great for diagrams and shapes, while PNGs are better for photographs. SVG files are a bit like instructions on how to make an image. This means that they can be resized without looking pixelated or blocky. </p> SVG (Scalable Vector Graphics) is an open standard used to describe two-dimensional vector graphics. It is great for diagrams and shapes, while PNGs are better for photographs. SVG files are a bit like instructions on how to make an image. This means that they can be resized without looking pixelated or blocky. </p>
<p> <p>
For more information, visit: <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p> For more information, visit: <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p>
</section>
<h2>How to make SVGs</h2> <section class="indent">
<header>
<h1>How to make SVGs</h1>
</header>
<p> <p>
An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program. </p> An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program available for Windows, macOS, and Linux. There are also other applications that can produce SVGs, both free/open source, and commerical/proprietary. </p>
<p> <dl>
It is likely that is already installed on your system. If not, it should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.inkscape.org/">http://www.inkscape.org/</a>, respectively. </p> <dt><strong>Open Source</strong></dt>
<dd>
<h2>Mac and Windows users</h2> <ul>
<li> <cite>Inkscape</cite>
&mdash;
<a href="http://www.inkscape.org/">http://www.inkscape.org/</a>
</li>
<li> <cite>Karbon</cite>
&mdash;
<a href="https://calligra.org/karbon/">https://calligra.org/karbon/</a>
</li>
</ul>
</dd>
<dt><strong>Proprietary</strong></dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
&mdash; &mdash;
<a href="http://www.corel.com/">http://www.corel.com/</a> <a href="https://www.coreldraw.com/en/">https://www.coreldraw.com/en/</a>
</li>
<li> <cite>Illustrator</cite> <li> <cite>Illustrator</cite>
(Adobe) (Adobe)
&mdash; &mdash;
<a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a> <a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a>
</li>
<li> <cite>Boxy SVG</cite>
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
<li> <cite>Sketch</cite>
(Sketch B.V.)
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
</ul> </ul>
</dl>
</section>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,9 +5,7 @@
Copyright © 2007-2022 by divers contributeurs; see AUTHORS.txt. Copyright © 2007-2022 by divers contributeurs; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
janvier 20, 2022 mars 31, 2022
----------------------------------------------------------------------
À propos des PNG À propos des PNG
@ -38,51 +36,58 @@ Comment créer des PNG
GIMP & Krita GIMP & Krita
D'excellents outils pour créer des images PNG utilisables dans Tux Paint D'excellents outils pour créer des images PNG utilisables dans Tux
sont Gimp et Krita, tous deux programmes interactifs de dessin et Paint sont Gimp et Krita, tous deux programmes interactifs de
d'édition de photos Open Source et de grande qualité. dessin et d'édition de photos Open Source et de grande qualité.
Un des deux, ou les deux, sont probablement déjà installés sur votre Un des deux, ou les deux, sont probablement déjà installés sur
système Linux. Sinon, ils sont certainement disponibles depuis le site de votre système Linux. Sinon, ils sont certainement disponibles
téléchargement de votre distribution. Sinon, ou pour en apprendre plus, depuis le site de téléchargement de votre distribution. Sinon, ou
visitez respectivement http://www.gimp.org/ et http://www.krita.org/. pour en apprendre plus, visitez respectivement
http://www.gimp.org/ et http://www.krita.org/.
Outils en ligne de commande Outils en ligne de commande
NetPBM NetPBM
Les outils Bitmap portables (appelés généralement «NetPBM») sont une Les outils Bitmap portables (appelés généralement
collection d'outils de ligne de commande Open Source qui convertissent «NetPBM») sont une collection d'outils de ligne de
vers et depuis différents formats tels que GIF, TIFF, BMP, PNG et beaucoup commande Open Source qui convertissent vers et depuis
d'autres. différents formats tels que GIF, TIFF, BMP, PNG et
beaucoup d'autres.
Ils sont probablement déjà installés sur votre système. Sinon, ils sont Ils sont probablement déjà installés sur votre
certainement disponibles depuis le site de téléchargement de votre système. Sinon, ils sont certainement disponibles
distribution Linux. Sinon, ou pour en apprendre plus, visitez depuis le site de téléchargement de votre
http://netpbm.sourceforge.net/. distribution Linux. Sinon, ou pour en apprendre plus,
visitez http://netpbm.sourceforge.net/.
cjpeg/djpeg cjpeg/djpeg
Les programmes en ligne de commande "cjpeg" et "djpeg" font la conversion Les programmes en ligne de commande "cjpeg" et
entre le format PNM (Portable Any Map) de NetPBM et les JPEG. Ils sont "djpeg" font la conversion entre le format PNM
probablement déjà installés sur votre système. Sinon, ils sont (Portable Any Map) de NetPBM et les JPEG. Ils sont
certainement disponibles depuis le site de téléchargement de votre probablement déjà installés sur votre système. Sinon,
distribution Linux. Sinon, ou pour en apprendre plus, visitez ils sont certainement disponibles depuis le site de
téléchargement de votre distribution Linux. Sinon, ou
pour en apprendre plus, visitez
https://jpegclub.org/. https://jpegclub.org/.
Utilisateurs de Windows Proprietary Software for Windows
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
http://www.adobe.com/products/illustrator.html
* Paint Shop Pro (Corel) — https://www.paintshoppro.com/ * Paint Shop Pro (Corel) — https://www.paintshoppro.com/
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html * Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html
* PIXresizer (Bluefive software) — * PIXresizer (Bluefive software) —
http://bluefive.pair.com/pixresizer.htm http://bluefive.pair.com/pixresizer.htm
Utilisateurs de Macintosh Utilisateurs de Macintosh
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* GraphicConverter (Lemke Software) — * GraphicConverter (Lemke Software) —
https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/ https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html http://www.adobe.com/products/illustrator.html
* Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html

View file

@ -6,8 +6,9 @@
Copyright © 2002-2022 by divers contributeurs; see AUTHORS.txt. Copyright © 2002-2022 by divers contributeurs; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
@TuxPaintTweets on Twitter @TuxPaintTweets on Twitter
Tux Paint on Tumblr
mars 1, 2022 mars 18, 2022
+----------------------------------------------------------+ +----------------------------------------------------------+
|Table des matières | |Table des matières |
@ -1147,3 +1148,4 @@ Importer des images manuellement
* "Microsoft" and "Windows" are registered trademarks of Microsoft Corp. * "Microsoft" and "Windows" are registered trademarks of Microsoft Corp.
* "Apple" and "macOS" are registered trademarks of Apple Inc. * "Apple" and "macOS" are registered trademarks of Apple Inc.
* "Twitter" is a registered trademark of Twitter, Inc. * "Twitter" is a registered trademark of Twitter, Inc.
* "Tumblr" is a registered trademark of Tumblr, Inc.

View file

@ -5,9 +5,7 @@
Copyright © 2019-2022 by divers contributeurs; see AUTHORS.txt. Copyright © 2019-2022 by divers contributeurs; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
janvier 20, 2022 mars 31, 2022
----------------------------------------------------------------------
Tux Paint répond aux signaux suivants (qui peuvent être envoyé au Tux Paint répond aux signaux suivants (qui peuvent être envoyé au
processus du programme via `kill` ou`killall`, par exemple). processus du programme via `kill` ou`killall`, par exemple).
@ -28,14 +26,13 @@
sauvegarder avec un nouveau nom (par ex. "--saveover" ou sauvegarder avec un nouveau nom (par ex. "--saveover" ou
"--saveovernew") vers un nouveau fichier. "--saveovernew") vers un nouveau fichier.
Remarque :Sur d'autres parties de l'interface, le signal est en
fait interprété comme une demande de retour en arrière (par
exemple, de la boîte de dialogue "Nouveau" pour revenir sur
l'interface principale), comme si un bouton "Retour" dans Tux
Paint a été cliqué, ou la touche [Esc] enfoncée.
Exemple: killall tuxpaint Exemple: killall tuxpaint
💡 Note: From other parts of the interface, the signal is currently
interpreted as a request to go back (e.g., from the "New" dialog
back to the main interface), as if a "Back" button in Tux Paint
were clicked, or the [Esc] was key pressed.
SIGUSR1 & SIGUSR2 SIGUSR1 & SIGUSR2
Tux Paint répond en définissant son option "autosave" (comme si Tux Paint répond en définissant son option "autosave" (comme si
@ -50,10 +47,9 @@
Ainsi, à partir de l'interface principale, Tux Paint devrait se Ainsi, à partir de l'interface principale, Tux Paint devrait se
fermer presque immédiatement, sans poser de questions. fermer presque immédiatement, sans poser de questions.
À partir d'autres parties de l'interface, malheureusement, Tux
Paint ne reviendra que d'un niveau dans l'interface. Par
conséquent, à ce moment, il peut être nécessaire d'envoyer ce
signal à Tux Paint plusieurs fois pour qu'il s'arrête
complètement.
Exemple: killall -s SIGUSR1 tuxpaint Exemple: killall -s SIGUSR1 tuxpaint
💡 Note: From other parts of the interface, unfortunately, Tux
Paint will go back one level in the interface. Therefore, at this
time, it may be necessary to send this signal to Tux Paint a few
times, for it to quit completely.

View file

@ -7,8 +7,6 @@
janvier 20, 2022 janvier 20, 2022
----------------------------------------------------------------------
À propos de SVG À propos de SVG
SVG (Scalable Vector Graphics) est un standard ouvert utilisé pour décrire SVG (Scalable Vector Graphics) est un standard ouvert utilisé pour décrire
@ -22,16 +20,18 @@
Comment fabriquer des SVG Comment fabriquer des SVG
Un excellent outil pouvant servir à créer des images SVG pour Tux Paint An excellent tool with which to create SVG images for use in Tux Paint is
est Inkscape, un programme de dessin interactif d'excellente qualité, et Inkscape, a high-quality Open Source interactive drawing program available
Open Source. for Windows, macOS, and Linux. There are also other applications that can
produce SVGs, both free/open source, and commerical/proprietary.
Il est probablement déjà installé sur votre système. Sinon, il est Open Source
certainement disponible depuis le site de téléchargement de votre * Inkscape — http://www.inkscape.org/
distribution Linux. Sinon, ou pour en apprendre plus, visitez * Karbon — https://calligra.org/karbon/
http://www.inkscape.org/.
Utilisateurs de Mac et Windows Proprietary
* CorelDRAW (Corel) — https://www.coreldraw.com/en/
* CorelDRAW (Corel) — http://www.corel.com/ * Illustrator (Adobe) —
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html http://www.adobe.com/products/illustrator.html
* Boxy SVG — https://boxy-svg.com/
* Sketch (Sketch B.V.) — https://boxy-svg.com/

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,12 +5,82 @@
Documentation sur PNG pour Tux Paint </title> Documentation sur PNG pour Tux Paint </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -26,12 +96,15 @@
</p> </p>
<p> <p>
janvier 20, 2022 </p> mars 31, 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>À propos des PNG</h2> <h1>À propos des PNG</h1>
</header>
<p> <p>
PNG veut dire Portable Network Portable (format graphique portable pour réseau). C'est un standard ouvert, qui n'est pas sous le poids des brevets (comme les GIF). C'est un format hautement compressé (mais pas "avec perte" comme les JPEG - la perte permet aux fichiers d'être plus petit, mais introduit des "erreurs" dans l'image lors de l'enregistrement), et prend en charge la couleur 24 bits (16,7 millions de couleurs) ainsi qu'un "canal alpha", c'est-à-dire que chaque pixel peut avoir un degré variable de transparence. </p> PNG veut dire Portable Network Portable (format graphique portable pour réseau). C'est un standard ouvert, qui n'est pas sous le poids des brevets (comme les GIF). C'est un format hautement compressé (mais pas "avec perte" comme les JPEG - la perte permet aux fichiers d'être plus petit, mais introduit des "erreurs" dans l'image lors de l'enregistrement), et prend en charge la couleur 24 bits (16,7 millions de couleurs) ainsi qu'un "canal alpha", c'est-à-dire que chaque pixel peut avoir un degré variable de transparence. </p>
@ -44,32 +117,47 @@
<p> <p>
La prise en charge de nombreuses couleurs permet aux images "tampons de caoutchouc" de qualité photo d'être utilisable dans Tux Paint, et la transparence alpha permet une haute qualité pour les pinceaux. </p> La prise en charge de nombreuses couleurs permet aux images "tampons de caoutchouc" de qualité photo d'être utilisable dans Tux Paint, et la transparence alpha permet une haute qualité pour les pinceaux. </p>
</section>
<section class="indent">
<header>
<h2>Comment créer des PNG</h2> <h2>Comment créer des PNG</h2>
</header>
<p>Ce qui suit est une très <em>brève</em> liste de méthodes pour créer des PNG ou convertir des images existantes en PNG. <p>Ce qui suit est une très <em>brève</em> liste de méthodes pour créer des PNG ou convertir des images existantes en PNG.
<h3>GIMP &amp; Krita</h3> <dl>
<dt>GIMP &amp; Krita</dt>
<dd>
<p> <p>
D'excellents outils pour créer des images PNG utilisables dans Tux Paint sont Gimp et Krita, tous deux programmes interactifs de dessin et d'édition de photos Open Source et de grande qualité. </p> D'excellents outils pour créer des images PNG utilisables dans Tux Paint sont Gimp et Krita, tous deux programmes interactifs de dessin et d'édition de photos Open Source et de grande qualité. </p>
<p> <p>
Un des deux, ou les deux, sont probablement déjà installés sur votre système Linux. Sinon, ils sont certainement disponibles depuis le site de téléchargement de votre distribution. Sinon, ou pour en apprendre plus, visitez respectivement <a href="http://www.gimp.org/">http://www.gimp.org/</a> et <a href="http://www.krita.org/">http://www.krita.org/</a>. </p> Un des deux, ou les deux, sont probablement déjà installés sur votre système Linux. Sinon, ils sont certainement disponibles depuis le site de téléchargement de votre distribution. Sinon, ou pour en apprendre plus, visitez respectivement <a href="http://www.gimp.org/">http://www.gimp.org/</a> et <a href="http://www.krita.org/">http://www.krita.org/</a>. </p>
</dd>
<h3>Outils en ligne de commande</h3> <dt>Outils en ligne de commande</dt>
<dd>
<h4>NetPBM</h4> <dl>
<dt>NetPBM</dt>
<dd>
<p> <p>
Les outils Bitmap portables (appelés généralement «NetPBM») sont une collection d'outils de ligne de commande Open Source qui convertissent vers et depuis différents formats tels que GIF, TIFF, BMP, PNG et beaucoup d'autres. </p> Les outils Bitmap portables (appelés généralement «NetPBM») sont une collection d'outils de ligne de commande Open Source qui convertissent vers et depuis différents formats tels que GIF, TIFF, BMP, PNG et beaucoup d'autres. </p>
<p> <p>
Ils sont probablement déjà installés sur votre système. Sinon, ils sont certainement disponibles depuis le site de téléchargement de votre distribution Linux. Sinon, ou pour en apprendre plus, visitez <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p> Ils sont probablement déjà installés sur votre système. Sinon, ils sont certainement disponibles depuis le site de téléchargement de votre distribution Linux. Sinon, ou pour en apprendre plus, visitez <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p>
</dd>
<h4>cjpeg/djpeg</h4> <dt>cjpeg/djpeg</dt>
<dd>
<p> <p>
Les programmes en ligne de commande "cjpeg" et "djpeg" font la conversion entre le format PNM (Portable Any Map) de NetPBM et les JPEG. Les programmes en ligne de commande "cjpeg" et "djpeg" font la conversion entre le format PNM (Portable Any Map) de NetPBM et les JPEG.
Ils sont probablement déjà installés sur votre système. Sinon, ils sont certainement disponibles depuis le site de téléchargement de votre distribution Linux. Sinon, ou pour en apprendre plus, visitez <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p> Ils sont probablement déjà installés sur votre système. Sinon, ils sont certainement disponibles depuis le site de téléchargement de votre distribution Linux. Sinon, ou pour en apprendre plus, visitez <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p>
</dd>
</dl>
</dd>
<h3>Utilisateurs de Windows</h3> <dt>Proprietary Software for Windows</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -92,8 +180,10 @@
&mdash; &mdash;
<a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a> <a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a>
</ul> </ul>
</dd>
<h3>Utilisateurs de Macintosh</h3> <dt>Utilisateurs de Macintosh</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -112,6 +202,9 @@
&mdash; &mdash;
<a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a> <a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a>
</ul> </ul>
</dd>
</dl>
</section>
</body> </body>
</html> </html>

View file

@ -21,15 +21,17 @@
} }
div.keeptogether { page-break-inside: avoid; } div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; } section h1 { font-size: 2em; }
h1, h2, h3, h4 { font-family: sans; } h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; } h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; } h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; } h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; } h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; } h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; } h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; } h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; } h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt { dt {
font-size: large; font-size: large;
color: #404; color: #404;
@ -60,6 +62,9 @@
section.indent dl p { section.indent dl p {
margin-left: 0; margin-left: 0;
} }
p + ul {
margin-left: 2em;
}
@media print { @media print {
p { p {
@ -92,11 +97,12 @@
<p> <p>
Copyright &copy; 2002-2022 by divers contributeurs; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/> Copyright &copy; 2002-2022 by divers contributeurs; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/>
<a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/> <a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/>
<a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a> <a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a><br/>
<a href="https://tuxpaint.tumblr.com/">Tux Paint on Tumblr</a>
</p> </p>
<p> <p>
mars 1, 2022 </p> mars 18, 2022 </p>
</center> </center>
</header> </header>
<table border="2" <table border="2"
@ -1602,6 +1608,7 @@
<li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li> <li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li>
<li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li> <li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li>
<li>"Twitter" is a registered trademark of Twitter, Inc.</li> <li>"Twitter" is a registered trademark of Twitter, Inc.</li>
<li>"Tumblr" is a registered trademark of Tumblr, Inc.</li>
</ul> </ul>
</section> </section>
</footer> </footer>

View file

@ -5,13 +5,83 @@
Documentation sur les signaux pour Tux Paint </title> Documentation sur les signaux pour Tux Paint </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<center> <center>
<header>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
width="205" width="205"
@ -26,11 +96,12 @@
</p> </p>
<p> <p>
janvier 20, 2022 </p> mars 31, 2022 </p>
</header>
</center> </center>
</section>
<hr> <section>
<p> <p>
Tux Paint répond aux signaux suivants (qui peuvent être envoyé au processus du programme via `<code>kill</code>` ou`<code>killall</code>`, par exemple). </p> Tux Paint répond aux signaux suivants (qui peuvent être envoyé au processus du programme via `<code>kill</code>` ou`<code>killall</code>`, par exemple). </p>
@ -46,11 +117,11 @@
<p> <p>
Depuis l'interface principale, Tux Paint vous demandera si vous souhaitez quitter ou non, et (sauf si remplacé par l'option autosave, par ex. "<code>--autosave</code>") si vous souhaitez enregistrer le dessin courant (s'il n'est pas enregistré), et si c'est le cas, et c'est une version modifiée d'un dessin existant (sauf si remplacé par les options pour écraser les images anciennes, ou bien sauvegarder avec un nouveau nom (par ex. "<code>--saveover</code>" ou "<code>--saveovernew</code>") vers un nouveau fichier. </p> Depuis l'interface principale, Tux Paint vous demandera si vous souhaitez quitter ou non, et (sauf si remplacé par l'option autosave, par ex. "<code>--autosave</code>") si vous souhaitez enregistrer le dessin courant (s'il n'est pas enregistré), et si c'est le cas, et c'est une version modifiée d'un dessin existant (sauf si remplacé par les options pour écraser les images anciennes, ou bien sauvegarder avec un nouveau nom (par ex. "<code>--saveover</code>" ou "<code>--saveovernew</code>") vers un nouveau fichier. </p>
<p>
<b>Remarque :</b>Sur d'autres parties de l'interface, le signal est en fait interprété comme une demande de retour en arrière (par exemple, de la boîte de dialogue "Nouveau" pour revenir sur l'interface principale), comme si un bouton "Retour" dans Tux Paint a été cliqué, ou la touche <b><code>[Esc]</code></b> enfoncée. </p>
<p> <p>
Exemple: <code>killall tuxpaint</code> </p> Exemple: <code>killall tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
</dd> </dd>
<dt> <dt>
@ -64,12 +135,13 @@
<p> <p>
Ainsi, à partir de l'interface principale, Tux Paint devrait se fermer presque immédiatement, sans poser de questions. </p> Ainsi, à partir de l'interface principale, Tux Paint devrait se fermer presque immédiatement, sans poser de questions. </p>
<p>
À partir d'autres parties de l'interface, malheureusement, Tux Paint ne reviendra que d'un niveau dans l'interface. Par conséquent, à ce moment, il peut être nécessaire d'envoyer ce signal à Tux Paint plusieurs fois pour qu'il s'arrête complètement. </p>
<p> <p>
Exemple: <code>killall -s SIGUSR1 tuxpaint</code> </p> Exemple: <code>killall -s SIGUSR1 tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
</dd> </dd>
</dl> </dl>
</section>
</body> </body>
</html> </html>

View file

@ -5,12 +5,84 @@
Documentation sur SVG pour Tux Paint </title> Documentation sur SVG pour Tux Paint </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<!-- Title -->
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -28,36 +100,68 @@
<p> <p>
janvier 20, 2022 </p> janvier 20, 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>À propos de SVG</h2> <h1>À propos de SVG</h1>
</header>
<p> <p>
SVG (Scalable Vector Graphics) est un standard ouvert utilisé pour décrire des graphiques vectoriels en deux dimensions. C'est parfait pour les diagrammes et les formes, tandis que les PNG sont meilleurs pour les photographies. Les fichiers SVG sont un peu comme des instructions sur la façon de créer une image. Cela signifie qu'ils peuvent être redimensionnés sans paraître pixélisés ou avec des blocs. </p> SVG (Scalable Vector Graphics) est un standard ouvert utilisé pour décrire des graphiques vectoriels en deux dimensions. C'est parfait pour les diagrammes et les formes, tandis que les PNG sont meilleurs pour les photographies. Les fichiers SVG sont un peu comme des instructions sur la façon de créer une image. Cela signifie qu'ils peuvent être redimensionnés sans paraître pixélisés ou avec des blocs. </p>
<p> <p>
Pour plus d'informations, voir : <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p> Pour plus d'informations, voir : <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p>
</section>
<h2>Comment fabriquer des SVG</h2> <section class="indent">
<header>
<h1>Comment fabriquer des SVG</h1>
</header>
<p> <p>
Un excellent outil pouvant servir à créer des images SVG pour Tux Paint est Inkscape, un programme de dessin interactif d'excellente qualité, et Open Source. </p> An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program available for Windows, macOS, and Linux. There are also other applications that can produce SVGs, both free/open source, and commerical/proprietary. </p>
<p> <dl>
Il est probablement déjà installé sur votre système. Sinon, il est certainement disponible depuis le site de téléchargement de votre distribution Linux. Sinon, ou pour en apprendre plus, visitez <a href="http://www.inkscape.org/">http://www.inkscape.org/</a>. </p> <dt><strong>Open Source</strong></dt>
<dd>
<h2>Utilisateurs de Mac et Windows</h2> <ul>
<li> <cite>Inkscape</cite>
&mdash;
<a href="http://www.inkscape.org/">http://www.inkscape.org/</a>
</li>
<li> <cite>Karbon</cite>
&mdash;
<a href="https://calligra.org/karbon/">https://calligra.org/karbon/</a>
</li>
</ul>
</dd>
<dt><strong>Proprietary</strong></dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
&mdash; &mdash;
<a href="http://www.corel.com/">http://www.corel.com/</a> <a href="https://www.coreldraw.com/en/">https://www.coreldraw.com/en/</a>
</li>
<li> <cite>Illustrator</cite> <li> <cite>Illustrator</cite>
(Adobe) (Adobe)
&mdash; &mdash;
<a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a> <a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a>
</li>
<li> <cite>Boxy SVG</cite>
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
<li> <cite>Sketch</cite>
(Sketch B.V.)
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
</ul> </ul>
</dl>
</section>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,9 +5,7 @@
Copyright © 2007-2022 by varios colaboradores; see AUTHORS.txt. Copyright © 2007-2022 by varios colaboradores; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
20 de Xaneiro de 2022 31 de Marzo de 2022
----------------------------------------------------------------------
Sobre os PNG Sobre os PNG
@ -37,49 +35,57 @@ Como facer imaxes PNG
GIMP & Krita GIMP & Krita
GIMP e Krita son dúas excelentes ferramentas coas que crear imaxes PNG GIMP e Krita son dúas excelentes ferramentas coas que crear imaxes
para usar en Tux Paint , ambos son programas de debuxo interactivo e PNG para usar en Tux Paint , ambos son programas de debuxo
edición de fotos de código aberto de alta calidade. interactivo e edición de fotos de código aberto de alta calidade.
É probábel que un ou ambos xa estean instalados no seu sistema. Se non, É probábel que un ou ambos xa estean instalados no seu sistema. Se
deberían estar dispoñíbeis no repositorio de software da súa distribución non, deberían estar dispoñíbeis no repositorio de software da súa
Linux. Se non é así, ou para obter máis información, visite distribución Linux. Se non é así, ou para obter máis información,
http://www.gimp.org/ e http://www.krita.org/ respectivamente. visite http://www.gimp.org/ e http://www.krita.org/
respectivamente.
Ferramentas da liña de ordes Ferramentas da liña de ordes
NetPBM NetPBM
As ferramentas de Mapas de bits Portátil Portable Bitmap (coñecidas As ferramentas de Mapas de bits Portátil Portable
colectivamente como «NetPBM») son unha colección de ferramentas de liña de Bitmap (coñecidas colectivamente como «NetPBM») son
ordes de código aberto que converten a e dende varios formatos, incluíndo unha colección de ferramentas de liña de ordes de
GIF, TIFF, BMP, PNG e moitos máis. código aberto que converten a e dende varios
formatos, incluíndo GIF, TIFF, BMP, PNG e moitos
máis.
É posíbel que xa estea instalado no seu sistema. Se non, estarán É posíbel que xa estea instalado no seu sistema. Se
dispoñíbeis no repositorio de software da súa distribución Linux. Se non é non, estarán dispoñíbeis no repositorio de software
así, ou para saber máis, visite http://netpbm.sourceforge.net/. da súa distribución Linux. Se non é así, ou para
saber máis, visite http://netpbm.sourceforge.net/.
cjpeg/djpeg cjpeg/djpeg
Os programas de liña de ordes «cjpeg» e «djpeg» converten entre o formato Os programas de liña de ordes «cjpeg» e «djpeg»
NetPBM Calquera mapa portátil Portable Any Map (PNM) e os JPEG. É converten entre o formato NetPBM Calquera mapa
posíbel que xa estea instalado no seu sistema. Se non, estarán dispoñíbeis portátil Portable Any Map (PNM) e os JPEG. É
no repositorio de software da súa distribución Linux. Se non é así, ou posíbel que xa estea instalado no seu sistema. Se
para saber máis, visite https://jpegclub.org/. non, estarán dispoñíbeis no repositorio de software
da súa distribución Linux. Se non é así, ou para
Usuarios de Windows saber máis, visite https://jpegclub.org/.
Proprietary Software for Windows
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
http://www.adobe.com/products/illustrator.html
* Paint Shop Pro (Corel) — https://www.paintshoppro.com/ * Paint Shop Pro (Corel) — https://www.paintshoppro.com/
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html * Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html
* PIXresizer (Bluefive software) — * PIXresizer (Bluefive software) —
http://bluefive.pair.com/pixresizer.htm http://bluefive.pair.com/pixresizer.htm
Usuarios de Macintosh Usuarios de Macintosh
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* GraphicConverter (Lemke Software) — * GraphicConverter (Lemke Software) —
https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/ https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html http://www.adobe.com/products/illustrator.html
* Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html

View file

@ -6,8 +6,9 @@
Copyright © 2002-2022 by varios colaboradores; see AUTHORS.txt. Copyright © 2002-2022 by varios colaboradores; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
@TuxPaintTweets on Twitter @TuxPaintTweets on Twitter
Tux Paint on Tumblr
1 de Marzo de 2022 18 de Marzo de 2022
+-----------------------------------------------------------+ +-----------------------------------------------------------+
|Índice | |Índice |
@ -1113,3 +1114,4 @@ Importar imaxes manualmente
* "Microsoft" and "Windows" are registered trademarks of Microsoft Corp. * "Microsoft" and "Windows" are registered trademarks of Microsoft Corp.
* "Apple" and "macOS" are registered trademarks of Apple Inc. * "Apple" and "macOS" are registered trademarks of Apple Inc.
* "Twitter" is a registered trademark of Twitter, Inc. * "Twitter" is a registered trademark of Twitter, Inc.
* "Tumblr" is a registered trademark of Tumblr, Inc.

View file

@ -5,9 +5,7 @@
Copyright © 2019-2022 by varios colaboradores; see AUTHORS.txt. Copyright © 2019-2022 by varios colaboradores; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
20 de Xaneiro de 2022 31 de Marzo de 2022
----------------------------------------------------------------------
Tux Paint responde aos seguintes sinais (que poden enviarse ao proceso do Tux Paint responde aos seguintes sinais (que poden enviarse ao proceso do
programa a través de «kill» ou «killall», por exemplo). programa a través de «kill» ou «killall», por exemplo).
@ -29,13 +27,13 @@
quere ou non sobreescribir o debuxo existente ou gardalo nun novo quere ou non sobreescribir o debuxo existente ou gardalo nun novo
ficheiro. ficheiro.
Nota: Dende outras partes da interface, o sinal interprétase
actualmente como unha solicitude de retroceso (por exemplo, dende
o diálogo «Novo» de volta á interface principal), coma se se
premera un botón «Atrás» en Tux Paint ou se premera a tecla [Esc].
Exemplo: killall tuxpaint Exemplo: killall tuxpaint
💡 Note: From other parts of the interface, the signal is currently
interpreted as a request to go back (e.g., from the "New" dialog
back to the main interface), as if a "Back" button in Tux Paint
were clicked, or the [Esc] was key pressed.
SIGUSR1 & SIGUSR2 SIGUSR1 & SIGUSR2
Tux Paint responde axustando a súa opción de gardar Tux Paint responde axustando a súa opción de gardar
@ -49,9 +47,9 @@
Así, dende a interface principal, Tux Paint debería saír case de Así, dende a interface principal, Tux Paint debería saír case de
inmediato, sen facer preguntas. inmediato, sen facer preguntas.
Nota: Dende outras partes da interface, por desgraza, Tux Paint
retrocederá un nivel na interface. Polo tanto, neste momento pode
que sexa necesario enviar este sinal a Tux Paint unhas cantas
veces para que saia completamente.
Exemplo: killall -s SIGUSR1 tuxpaint Exemplo: killall -s SIGUSR1 tuxpaint
💡 Note: From other parts of the interface, unfortunately, Tux
Paint will go back one level in the interface. Therefore, at this
time, it may be necessary to send this signal to Tux Paint a few
times, for it to quit completely.

View file

@ -7,8 +7,6 @@
20 de Xaneiro de 2022 20 de Xaneiro de 2022
----------------------------------------------------------------------
Sobre os SVG Sobre os SVG
SVG (Scalable Vector Graphics — Gráficos Vectoriais Escalábeis) é un SVG (Scalable Vector Graphics — Gráficos Vectoriais Escalábeis) é un
@ -22,15 +20,18 @@ Sobre os SVG
Como facer imaxes SVG Como facer imaxes SVG
Unha excelente ferramenta coa que crear imaxes SVG para o seu uso en Tux An excellent tool with which to create SVG images for use in Tux Paint is
Paint é Inkscape, un programa de debuxo interactivo de código aberto de Inkscape, a high-quality Open Source interactive drawing program available
alta calidade. for Windows, macOS, and Linux. There are also other applications that can
produce SVGs, both free/open source, and commerical/proprietary.
É probable que xa estea instalado no seu sistema. Se non, debería estar Open Source
dispoñíbel no repositorio de software da súa distribución Linux. Se non, * Inkscape — http://www.inkscape.org/
ou para saber máis, visite http://www.inkscape.org/, respectivamente. * Karbon — https://calligra.org/karbon/
Usuarios de Mac e Windows Proprietary
* CorelDRAW (Corel) — https://www.coreldraw.com/en/
* CorelDRAW (Corel) — http://www.corel.com/ * Illustrator (Adobe) —
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html http://www.adobe.com/products/illustrator.html
* Boxy SVG — https://boxy-svg.com/
* Sketch (Sketch B.V.) — https://boxy-svg.com/

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,12 +5,82 @@
Documentación PNG de Tux Paint </title> Documentación PNG de Tux Paint </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -26,12 +96,15 @@
</p> </p>
<p> <p>
20 de Xaneiro de 2022 </p> 31 de Marzo de 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>Sobre os PNG</h2> <h1>Sobre os PNG</h1>
</header>
<p> <p>
PNG é o formato de Gráficos de Rede Portátiles. É un estándar aberto, non lastrado polas patentes (como os GIF). É un formato moi comprimido (aínda que non é «con perda» como os JPEG: a perda permite que os ficheiros sexan moito máis pequenos, mais introduce «erros» na imaxe cando se gardan) e admite cores de 24 bits (16,7 millóns de cores), así como unha «canle alfa» completo, é dicir, cada píxel pode ter un grao de transparencia variábel. </p> PNG é o formato de Gráficos de Rede Portátiles. É un estándar aberto, non lastrado polas patentes (como os GIF). É un formato moi comprimido (aínda que non é «con perda» como os JPEG: a perda permite que os ficheiros sexan moito máis pequenos, mais introduce «erros» na imaxe cando se gardan) e admite cores de 24 bits (16,7 millóns de cores), así como unha «canle alfa» completo, é dicir, cada píxel pode ter un grao de transparencia variábel. </p>
@ -44,32 +117,47 @@
<p> <p>
A compatibilidade con moitas cores permite utilizar imaxes de «selo de caucho» de calidade fotográfica en Tux Paint e a transparencia alfa permite pinceis de alta calidade. </p> A compatibilidade con moitas cores permite utilizar imaxes de «selo de caucho» de calidade fotográfica en Tux Paint e a transparencia alfa permite pinceis de alta calidade. </p>
</section>
<section class="indent">
<header>
<h2>Como facer imaxes PNG</h2> <h2>Como facer imaxes PNG</h2>
</header>
<p>A continuación amosarase unha lista moi <em>breve</em> de xeitos de crear PNG ou converter as imaxes existentes a PNG. <p>A continuación amosarase unha lista moi <em>breve</em> de xeitos de crear PNG ou converter as imaxes existentes a PNG.
<h3>GIMP &amp; Krita</h3> <dl>
<dt>GIMP &amp; Krita</dt>
<dd>
<p> <p>
GIMP e Krita son dúas excelentes ferramentas coas que crear imaxes PNG para usar en Tux Paint , ambos son programas de debuxo interactivo e edición de fotos de código aberto de alta calidade. </p> GIMP e Krita son dúas excelentes ferramentas coas que crear imaxes PNG para usar en Tux Paint , ambos son programas de debuxo interactivo e edición de fotos de código aberto de alta calidade. </p>
<p> <p>
É probábel que un ou ambos xa estean instalados no seu sistema. Se non, deberían estar dispoñíbeis no repositorio de software da súa distribución Linux. Se non é así, ou para obter máis información, visite <a href="http://www.gimp.org/">http://www.gimp.org/</a> e <a href="http://www.krita.org/">http://www.krita.org/</a> respectivamente. </p> É probábel que un ou ambos xa estean instalados no seu sistema. Se non, deberían estar dispoñíbeis no repositorio de software da súa distribución Linux. Se non é así, ou para obter máis información, visite <a href="http://www.gimp.org/">http://www.gimp.org/</a> e <a href="http://www.krita.org/">http://www.krita.org/</a> respectivamente. </p>
</dd>
<h3>Ferramentas da liña de ordes</h3> <dt>Ferramentas da liña de ordes</dt>
<dd>
<h4>NetPBM</h4> <dl>
<dt>NetPBM</dt>
<dd>
<p> <p>
As ferramentas de Mapas de bits Portátil Portable Bitmap (coñecidas colectivamente como «NetPBM») son unha colección de ferramentas de liña de ordes de código aberto que converten a e dende varios formatos, incluíndo GIF, TIFF, BMP, PNG e moitos máis. </p> As ferramentas de Mapas de bits Portátil Portable Bitmap (coñecidas colectivamente como «NetPBM») son unha colección de ferramentas de liña de ordes de código aberto que converten a e dende varios formatos, incluíndo GIF, TIFF, BMP, PNG e moitos máis. </p>
<p> <p>
É posíbel que xa estea instalado no seu sistema. Se non, estarán dispoñíbeis no repositorio de software da súa distribución Linux. Se non é así, ou para saber máis, visite <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p> É posíbel que xa estea instalado no seu sistema. Se non, estarán dispoñíbeis no repositorio de software da súa distribución Linux. Se non é así, ou para saber máis, visite <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p>
</dd>
<h4>cjpeg/djpeg</h4> <dt>cjpeg/djpeg</dt>
<dd>
<p> <p>
Os programas de liña de ordes «cjpeg» e «djpeg» converten entre o formato NetPBM Calquera mapa portátil Portable Any Map (PNM) e os JPEG. Os programas de liña de ordes «cjpeg» e «djpeg» converten entre o formato NetPBM Calquera mapa portátil Portable Any Map (PNM) e os JPEG.
É posíbel que xa estea instalado no seu sistema. Se non, estarán dispoñíbeis no repositorio de software da súa distribución Linux. Se non é así, ou para saber máis, visite <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p> É posíbel que xa estea instalado no seu sistema. Se non, estarán dispoñíbeis no repositorio de software da súa distribución Linux. Se non é así, ou para saber máis, visite <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p>
</dd>
</dl>
</dd>
<h3>Usuarios de Windows</h3> <dt>Proprietary Software for Windows</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -92,8 +180,10 @@
&mdash; &mdash;
<a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a> <a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a>
</ul> </ul>
</dd>
<h3>Usuarios de Macintosh</h3> <dt>Usuarios de Macintosh</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -112,6 +202,9 @@
&mdash; &mdash;
<a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a> <a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a>
</ul> </ul>
</dd>
</dl>
</section>
</body> </body>
</html> </html>

View file

@ -21,15 +21,17 @@
} }
div.keeptogether { page-break-inside: avoid; } div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; } section h1 { font-size: 2em; }
h1, h2, h3, h4 { font-family: sans; } h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; } h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; } h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; } h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; } h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; } h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; } h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; } h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; } h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt { dt {
font-size: large; font-size: large;
color: #404; color: #404;
@ -60,6 +62,9 @@
section.indent dl p { section.indent dl p {
margin-left: 0; margin-left: 0;
} }
p + ul {
margin-left: 2em;
}
@media print { @media print {
p { p {
@ -92,11 +97,12 @@
<p> <p>
Copyright &copy; 2002-2022 by varios colaboradores; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/> Copyright &copy; 2002-2022 by varios colaboradores; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/>
<a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/> <a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/>
<a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a> <a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a><br/>
<a href="https://tuxpaint.tumblr.com/">Tux Paint on Tumblr</a>
</p> </p>
<p> <p>
1 de Marzo de 2022 </p> 18 de Marzo de 2022 </p>
</center> </center>
</header> </header>
<table border="2" <table border="2"
@ -1602,6 +1608,7 @@
<li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li> <li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li>
<li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li> <li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li>
<li>"Twitter" is a registered trademark of Twitter, Inc.</li> <li>"Twitter" is a registered trademark of Twitter, Inc.</li>
<li>"Tumblr" is a registered trademark of Tumblr, Inc.</li>
</ul> </ul>
</section> </section>
</footer> </footer>

View file

@ -5,13 +5,83 @@
Documentación de sinais de Tux Paint </title> Documentación de sinais de Tux Paint </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<center> <center>
<header>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
width="205" width="205"
@ -26,11 +96,12 @@
</p> </p>
<p> <p>
20 de Xaneiro de 2022 </p> 31 de Marzo de 2022 </p>
</header>
</center> </center>
</section>
<hr> <section>
<p> <p>
Tux Paint responde aos seguintes sinais (que poden enviarse ao proceso do programa a través de «<code>kill</code>» ou «<code>killall</code>», por exemplo). </p> Tux Paint responde aos seguintes sinais (que poden enviarse ao proceso do programa a través de «<code>kill</code>» ou «<code>killall</code>», por exemplo). </p>
@ -46,11 +117,11 @@
<p> <p>
Dende a interface principal, Tux Paint preguntará se quere ou non saír e (a non ser que sexa anulado pol a opción de gardado automático, p. ex.: «<code>--autosave</code>x) se quere gardar o debuxo actual (se non está gardado) , e se é así, e é unha versión modificada dun debuxo existente (a non ser que sexa anulado polas opcións de gardar sobre imaxes antigas ou gardar sempre imaxes novas; por exemplo, «<code>--saveover</code>« e «<code>--saveovernew</code>», respectivamente), se quere ou non sobreescribir o debuxo existente ou gardalo nun novo ficheiro. </p> Dende a interface principal, Tux Paint preguntará se quere ou non saír e (a non ser que sexa anulado pol a opción de gardado automático, p. ex.: «<code>--autosave</code>x) se quere gardar o debuxo actual (se non está gardado) , e se é así, e é unha versión modificada dun debuxo existente (a non ser que sexa anulado polas opcións de gardar sobre imaxes antigas ou gardar sempre imaxes novas; por exemplo, «<code>--saveover</code>« e «<code>--saveovernew</code>», respectivamente), se quere ou non sobreescribir o debuxo existente ou gardalo nun novo ficheiro. </p>
<p>
<b>Nota:</b> Dende outras partes da interface, o sinal interprétase actualmente como unha solicitude de retroceso (por exemplo, dende o diálogo «Novo» de volta á interface principal), coma se se premera un botón «Atrás» en Tux Paint ou se premera a tecla <b><code>[Esc]</code></b>. </p>
<p> <p>
Exemplo: <code>killall tuxpaint</code> </p> Exemplo: <code>killall tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
</dd> </dd>
<dt> <dt>
@ -64,12 +135,13 @@
<p> <p>
Así, dende a interface principal, Tux Paint debería saír case de inmediato, sen facer preguntas. </p> Así, dende a interface principal, Tux Paint debería saír case de inmediato, sen facer preguntas. </p>
<p>
<b>Nota:</b> Dende outras partes da interface, por desgraza, Tux Paint retrocederá un nivel na interface. Polo tanto, neste momento pode que sexa necesario enviar este sinal a Tux Paint unhas cantas veces para que saia completamente. </p>
<p> <p>
Exemplo: <code>killall -s SIGUSR1 tuxpaint</code> </p> Exemplo: <code>killall -s SIGUSR1 tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
</dd> </dd>
</dl> </dl>
</section>
</body> </body>
</html> </html>

View file

@ -5,12 +5,84 @@
Documentación SVG de Tux Paint </title> Documentación SVG de Tux Paint </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<!-- Title -->
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -28,36 +100,68 @@
<p> <p>
20 de Xaneiro de 2022 </p> 20 de Xaneiro de 2022 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>Sobre os SVG</h2> <h1>Sobre os SVG</h1>
</header>
<p> <p>
SVG (Scalable Vector Graphics — Gráficos Vectoriais Escalábeis) é un estándar aberto usado para describir gráficos vectoriais bidimensionais. É xenial para diagramas e formas, mentres que PNG son mellores para fotografías. Os ficheiros SVG son un pouco como instrucións sobre como facer unha imaxe. Isto significa que poden cambiarse de sen que aparezan pixelados ou bloques. </p> SVG (Scalable Vector Graphics — Gráficos Vectoriais Escalábeis) é un estándar aberto usado para describir gráficos vectoriais bidimensionais. É xenial para diagramas e formas, mentres que PNG son mellores para fotografías. Os ficheiros SVG son un pouco como instrucións sobre como facer unha imaxe. Isto significa que poden cambiarse de sen que aparezan pixelados ou bloques. </p>
<p> <p>
Para obter máis información, visite:<a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p> Para obter máis información, visite:<a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p>
</section>
<h2>Como facer imaxes SVG</h2> <section class="indent">
<header>
<h1>Como facer imaxes SVG</h1>
</header>
<p> <p>
Unha excelente ferramenta coa que crear imaxes SVG para o seu uso en Tux Paint é Inkscape, un programa de debuxo interactivo de código aberto de alta calidade. </p> An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program available for Windows, macOS, and Linux. There are also other applications that can produce SVGs, both free/open source, and commerical/proprietary. </p>
<p> <dl>
É probable que xa estea instalado no seu sistema. Se non, debería estar dispoñíbel no repositorio de software da súa distribución Linux. Se non, ou para saber máis, visite <a href="http://www.inkscape.org/">http://www.inkscape.org/</a>, respectivamente. </p> <dt><strong>Open Source</strong></dt>
<dd>
<h2>Usuarios de Mac e Windows</h2> <ul>
<li> <cite>Inkscape</cite>
&mdash;
<a href="http://www.inkscape.org/">http://www.inkscape.org/</a>
</li>
<li> <cite>Karbon</cite>
&mdash;
<a href="https://calligra.org/karbon/">https://calligra.org/karbon/</a>
</li>
</ul>
</dd>
<dt><strong>Proprietary</strong></dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
&mdash; &mdash;
<a href="http://www.corel.com/">http://www.corel.com/</a> <a href="https://www.coreldraw.com/en/">https://www.coreldraw.com/en/</a>
</li>
<li> <cite>Illustrator</cite> <li> <cite>Illustrator</cite>
(Adobe) (Adobe)
&mdash; &mdash;
<a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a> <a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a>
</li>
<li> <cite>Boxy SVG</cite>
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
<li> <cite>Sketch</cite>
(Sketch B.V.)
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
</ul> </ul>
</dl>
</section>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,9 +5,7 @@
Copyright © 2007-2022 by various contributors; see AUTHORS.txt. Copyright © 2007-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
2022年1月20日 2022年3月31日
----------------------------------------------------------------------
About PNGs About PNGs
@ -35,48 +33,56 @@ How To Make PNGs
GIMP & Krita GIMP & Krita
Excellent tools with which to create PNG images for use in Tux Paint are Excellent tools with which to create PNG images for use in Tux
GIMP and Krita, both high-quality Open Source interactive drawing and Paint are GIMP and Krita, both high-quality Open Source
photo editing programs. interactive drawing and photo editing programs.
It is likely that one or both are already installed on your system. If It is likely that one or both are already installed on your
not, they should be readily available from your Linux distribution's system. If not, they should be readily available from your Linux
software repository. If not, or to learn more, visit http://www.gimp.org/ distribution's software repository. If not, or to learn more,
and http://www.krita.org/, respectively. visit http://www.gimp.org/ and http://www.krita.org/,
respectively.
Command-line Tools Command-line Tools
NetPBM NetPBM
The Portable Bitmap tools (collectively known as "NetPBM") is a collection The Portable Bitmap tools (collectively known as
of Open Source command-line tools which convert to and from various "NetPBM") is a collection of Open Source command-line
formats, including GIF, TIFF, BMP, PNG, and many more. tools which convert to and from various formats,
including GIF, TIFF, BMP, PNG, and many more.
It is possible that it's already installed on your system. If not, they it It is possible that it's already installed on your
be readily available from your Linux distribution's software repository. system. If not, they it be readily available from
If not, or to learn more, visit http://netpbm.sourceforge.net/. your Linux distribution's software repository. If
not, or to learn more, visit
http://netpbm.sourceforge.net/.
cjpeg/djpeg cjpeg/djpeg
The "cjpeg" and "djpeg" command-line programs convert between the NetPBM The "cjpeg" and "djpeg" command-line programs convert
Portable Any Map (PNM) format and JPEGs. It is possible that it's already between the NetPBM Portable Any Map (PNM) format and
installed on your system. If not, they it be readily available from your JPEGs. It is possible that it's already installed on
Linux distribution's software repository. If not, or to learn more, visit your system. If not, they it be readily available
from your Linux distribution's software repository.
If not, or to learn more, visit
https://jpegclub.org/. https://jpegclub.org/.
Windows のユーザー Proprietary Software for Windows
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
http://www.adobe.com/products/illustrator.html
* Paint Shop Pro (Corel) — https://www.paintshoppro.com/ * Paint Shop Pro (Corel) — https://www.paintshoppro.com/
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html * Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html
* PIXresizer (Bluefive software) — * PIXresizer (Bluefive software) —
http://bluefive.pair.com/pixresizer.htm http://bluefive.pair.com/pixresizer.htm
Macintosh Users Macintosh Users
* CorelDRAW (Corel) — http://www.corel.com/ * CorelDRAW (Corel) — http://www.corel.com/
* GraphicConverter (Lemke Software) — * GraphicConverter (Lemke Software) —
https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/ https://www.lemkesoft.de/mac-fotobearbeitung-mac-diashow-mac-grafikprogramm-mac-bildbetrachter/
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html * Illustrator (Adobe) —
* Photoshop (Adobe) — http://www.adobe.com/products/photoshop.html http://www.adobe.com/products/illustrator.html
* Photoshop (Adobe) —
http://www.adobe.com/products/photoshop.html

View file

@ -6,8 +6,9 @@
Copyright © 2002-2022 by various contributors; see AUTHORS.txt. Copyright © 2002-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
@TuxPaintTweets on Twitter @TuxPaintTweets on Twitter
Tux Paint on Tumblr
2022年3月 1日 2022年3月18
+-----------------------------------------------+ +-----------------------------------------------+
|目次 | |目次 |
@ -841,3 +842,4 @@ Tux Paint の起動
* "Microsoft" and "Windows" are registered trademarks of Microsoft Corp. * "Microsoft" and "Windows" are registered trademarks of Microsoft Corp.
* "Apple" and "macOS" are registered trademarks of Apple Inc. * "Apple" and "macOS" are registered trademarks of Apple Inc.
* "Twitter" is a registered trademark of Twitter, Inc. * "Twitter" is a registered trademark of Twitter, Inc.
* "Tumblr" is a registered trademark of Tumblr, Inc.

View file

@ -5,9 +5,7 @@
Copyright © 2019-2022 by various contributors; see AUTHORS.txt. Copyright © 2019-2022 by various contributors; see AUTHORS.txt.
https://tuxpaint.org/ https://tuxpaint.org/
2022年1月20日 2022年3月31日
----------------------------------------------------------------------
Tux Paint responds to the following signals (which can be sent to the Tux Paint responds to the following signals (which can be sent to the
program's process via `kill` or `killall`, for example). program's process via `kill` or `killall`, for example).
@ -27,13 +25,13 @@
respectively), whether or not to overwrite the existing drawing, respectively), whether or not to overwrite the existing drawing,
or save to a new file. or save to a new file.
Note: From other parts of the interface, the signal is currently killall tuxpaint
💡 Note: From other parts of the interface, the signal is currently
interpreted as a request to go back (e.g., from the "New" dialog interpreted as a request to go back (e.g., from the "New" dialog
back to the main interface), as if a "Back" button in Tux Paint back to the main interface), as if a "Back" button in Tux Paint
were clicked, or the [Esc] was key pressed. were clicked, or the [Esc] was key pressed.
killall tuxpaint
SIGUSR1 & SIGUSR2 SIGUSR1 & SIGUSR2
Tux Paint responds by setting its auto-save option (as if it had Tux Paint responds by setting its auto-save option (as if it had
@ -47,9 +45,9 @@
So, from the main interface, Tux Paint should quit almost So, from the main interface, Tux Paint should quit almost
immediately, with no questions asked. immediately, with no questions asked.
Note: From other parts of the interface, unfortunately, Tux Paint
will go back one level in the interface. Therefore, at this time,
it may be necessary to send this signal to Tux Paint a few times,
for it to quit completely.
killall -s SIGUSR1 tuxpaint killall -s SIGUSR1 tuxpaint
💡 Note: From other parts of the interface, unfortunately, Tux
Paint will go back one level in the interface. Therefore, at this
time, it may be necessary to send this signal to Tux Paint a few
times, for it to quit completely.

View file

@ -7,8 +7,6 @@
2022年1月20日 2022年1月20日
----------------------------------------------------------------------
About SVGs About SVGs
SVG (Scalable Vector Graphics) is an open standard used to describe SVG (Scalable Vector Graphics) is an open standard used to describe
@ -22,13 +20,17 @@ About SVGs
How to make SVGs How to make SVGs
An excellent tool with which to create SVG images for use in Tux Paint is An excellent tool with which to create SVG images for use in Tux Paint is
Inkscape, a high-quality Open Source interactive drawing program. Inkscape, a high-quality Open Source interactive drawing program available
for Windows, macOS, and Linux. There are also other applications that can
produce SVGs, both free/open source, and commerical/proprietary.
It is likely that is already installed on your system. If not, it should Open Source
be readily available from your Linux distribution's software repository. * Inkscape — http://www.inkscape.org/
If not, or to learn more, visit http://www.inkscape.org/, respectively. * Karbon — https://calligra.org/karbon/
Mac and Windows users Proprietary
* CorelDRAW (Corel) — https://www.coreldraw.com/en/
* CorelDRAW (Corel) — http://www.corel.com/ * Illustrator (Adobe) —
* Illustrator (Adobe) — http://www.adobe.com/products/illustrator.html http://www.adobe.com/products/illustrator.html
* Boxy SVG — https://boxy-svg.com/
* Sketch (Sketch B.V.) — https://boxy-svg.com/

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -5,12 +5,82 @@
Tux Paint PNG Documentation </title> Tux Paint PNG Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -26,12 +96,15 @@
</p> </p>
<p> <p>
2022年1月20日 </p> 2022年3月31日 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>About PNGs</h2> <h1>About PNGs</h1>
</header>
<p> <p>
PNG is the Portable Network Graphic format. It is an open standard, not burdened by patents (like GIFs). It is a highly compressed format (though not "lossy" like JPEGs - lossiness allows files to be much smaller, but introduces 'mistakes' in the image when saved), and supports 24-bit color (16.7 million colors) as well as a full "alpha channel" - that is, each pixel can have a varying degree of transparency. </p> PNG is the Portable Network Graphic format. It is an open standard, not burdened by patents (like GIFs). It is a highly compressed format (though not "lossy" like JPEGs - lossiness allows files to be much smaller, but introduces 'mistakes' in the image when saved), and supports 24-bit color (16.7 million colors) as well as a full "alpha channel" - that is, each pixel can have a varying degree of transparency. </p>
@ -44,32 +117,47 @@
<p> <p>
Support for many colors allows photo-quality "rubber stamp" images to be used in Tux Paint, and alpha transparency allows for high-quality brushes. </p> Support for many colors allows photo-quality "rubber stamp" images to be used in Tux Paint, and alpha transparency allows for high-quality brushes. </p>
</section>
<section class="indent">
<header>
<h2>How To Make PNGs</h2> <h2>How To Make PNGs</h2>
</header>
<p>The following is a very <em>brief</em> list of ways to create PNGs or convert existing images into PNGs. <p>The following is a very <em>brief</em> list of ways to create PNGs or convert existing images into PNGs.
<h3>GIMP &amp; Krita</h3> <dl>
<dt>GIMP &amp; Krita</dt>
<dd>
<p> <p>
Excellent tools with which to create PNG images for use in Tux Paint are GIMP and Krita, both high-quality Open Source interactive drawing and photo editing programs. </p> Excellent tools with which to create PNG images for use in Tux Paint are GIMP and Krita, both high-quality Open Source interactive drawing and photo editing programs. </p>
<p> <p>
It is likely that one or both are already installed on your system. If not, they should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.gimp.org/">http://www.gimp.org/</a> and <a href="http://www.krita.org/">http://www.krita.org/</a>, respectively. </p> It is likely that one or both are already installed on your system. If not, they should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.gimp.org/">http://www.gimp.org/</a> and <a href="http://www.krita.org/">http://www.krita.org/</a>, respectively. </p>
</dd>
<h3>Command-line Tools</h3> <dt>Command-line Tools</dt>
<dd>
<h4>NetPBM</h4> <dl>
<dt>NetPBM</dt>
<dd>
<p> <p>
The Portable Bitmap tools (collectively known as "NetPBM") is a collection of Open Source command-line tools which convert to and from various formats, including GIF, TIFF, BMP, PNG, and many more. </p> The Portable Bitmap tools (collectively known as "NetPBM") is a collection of Open Source command-line tools which convert to and from various formats, including GIF, TIFF, BMP, PNG, and many more. </p>
<p> <p>
It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p> It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://netpbm.sourceforge.net/">http://netpbm.sourceforge.net/</a>. </p>
</dd>
<h4>cjpeg/djpeg</h4> <dt>cjpeg/djpeg</dt>
<dd>
<p> <p>
The "cjpeg" and "djpeg" command-line programs convert between the NetPBM Portable Any Map (PNM) format and JPEGs. The "cjpeg" and "djpeg" command-line programs convert between the NetPBM Portable Any Map (PNM) format and JPEGs.
It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p> It is possible that it's already installed on your system. If not, they it be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="https://jpegclub.org/">https://jpegclub.org/</a>. </p>
</dd>
</dl>
</dd>
<h3>Windows のユーザー</h3> <dt>Proprietary Software for Windows</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -92,8 +180,10 @@
&mdash; &mdash;
<a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a> <a href="http://bluefive.pair.com/pixresizer.htm">http://bluefive.pair.com/pixresizer.htm</a>
</ul> </ul>
</dd>
<h3>Macintosh Users</h3> <dt>Macintosh Users</dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
@ -112,6 +202,9 @@
&mdash; &mdash;
<a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a> <a href="http://www.adobe.com/products/photoshop.html">http://www.adobe.com/products/photoshop.html</a>
</ul> </ul>
</dd>
</dl>
</section>
</body> </body>
</html> </html>

View file

@ -21,15 +21,17 @@
} }
div.keeptogether { page-break-inside: avoid; } div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; } section h1 { font-size: 2em; }
h1, h2, h3, h4 { font-family: sans; } h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; } h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; } h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; } h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; } h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; } h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; } h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; } h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; } h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt { dt {
font-size: large; font-size: large;
color: #404; color: #404;
@ -60,6 +62,9 @@
section.indent dl p { section.indent dl p {
margin-left: 0; margin-left: 0;
} }
p + ul {
margin-left: 2em;
}
@media print { @media print {
p { p {
@ -92,11 +97,12 @@
<p> <p>
Copyright &copy; 2002-2022 by various contributors; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/> Copyright &copy; 2002-2022 by various contributors; see <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br/>
<a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/> <a href="https://tuxpaint.org/">https://tuxpaint.org/</a><br/>
<a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a> <a href="https://twitter.com/TuxPaintTweets">@TuxPaintTweets on Twitter</a><br/>
<a href="https://tuxpaint.tumblr.com/">Tux Paint on Tumblr</a>
</p> </p>
<p> <p>
2022年3月 1日 </p> 2022年3月18</p>
</center> </center>
</header> </header>
<table border="2" <table border="2"
@ -1602,6 +1608,7 @@
<li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li> <li>"Microsoft" and "Windows" are registered trademarks of Microsoft Corp.</li>
<li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li> <li>"Apple" and "macOS" are registered trademarks of Apple Inc.</li>
<li>"Twitter" is a registered trademark of Twitter, Inc.</li> <li>"Twitter" is a registered trademark of Twitter, Inc.</li>
<li>"Tumblr" is a registered trademark of Tumblr, Inc.</li>
</ul> </ul>
</section> </section>
</footer> </footer>

View file

@ -5,13 +5,83 @@
Tux Paint Signals Documentation </title> Tux Paint Signals Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<section class="outer">
<center> <center>
<header>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
width="205" width="205"
@ -26,11 +96,12 @@
</p> </p>
<p> <p>
2022年1月20日 </p> 2022年3月31日 </p>
</header>
</center> </center>
</section>
<hr> <section>
<p> <p>
Tux Paint responds to the following signals (which can be sent to the program's process via `<code>kill</code>` or `<code>killall</code>`, for example). </p> Tux Paint responds to the following signals (which can be sent to the program's process via `<code>kill</code>` or `<code>killall</code>`, for example). </p>
@ -46,11 +117,11 @@
<p> <p>
From the main interface, Tux Paint will prompt whether or not you wish to quit, and (unless overridden by the auto-save option, e.g. "<code>--autosave</code>") if you'd like to save the current drawing (if unsaved), and if so, and it's a modified version of an existing drawing (unless overridden by the options to save over old images, or always save new images; e.g. "<code>--saveover</code>" and "<code>--saveovernew</code>", respectively), whether or not to overwrite the existing drawing, or save to a new file. </p> From the main interface, Tux Paint will prompt whether or not you wish to quit, and (unless overridden by the auto-save option, e.g. "<code>--autosave</code>") if you'd like to save the current drawing (if unsaved), and if so, and it's a modified version of an existing drawing (unless overridden by the options to save over old images, or always save new images; e.g. "<code>--saveover</code>" and "<code>--saveovernew</code>", respectively), whether or not to overwrite the existing drawing, or save to a new file. </p>
<p>
<b>Note:</b> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
<p> <p>
例:<code>killall tuxpaint</code> </p> 例:<code>killall tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, the signal is currently interpreted as a request to go back (e.g., from the "New" dialog back to the main interface), as if a "Back" button in Tux Paint were clicked, or the <b><code>[Esc]</code></b> was key pressed. </p>
</dd> </dd>
<dt> <dt>
@ -64,12 +135,13 @@
<p> <p>
So, from the main interface, Tux Paint should quit almost immediately, with no questions asked. </p> So, from the main interface, Tux Paint should quit almost immediately, with no questions asked. </p>
<p>
<b>Note:</b> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
<p> <p>
例:<code>killall -s SIGUSR1 tuxpaint</code> </p> 例:<code>killall -s SIGUSR1 tuxpaint</code> </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Note:</strong> From other parts of the interface, unfortunately, Tux Paint will go back one level in the interface. Therefore, at this time, it may be necessary to send this signal to Tux Paint a few times, for it to quit completely. </p>
</dd> </dd>
</dl> </dl>
</section>
</body> </body>
</html> </html>

View file

@ -5,12 +5,84 @@
Tux Paint SVG Documentation </title> Tux Paint SVG Documentation </title>
<meta http-equiv="Content-Type" <meta http-equiv="Content-Type"
content="text/html; charset=utf-8"> content="text/html; charset=utf-8">
<style>
body { font-size: large; }
table { font-size: large; }
div.screenshot-center {
text-align: center;
}
div.screenshot-right {
float: right;
margin-left: 1em;
margin-bottom: 1em;
}
div.screenshot-right-after {
clear: both;
}
div.keeptogether { page-break-inside: avoid; }
section h1 { font-size: 2em; }
h1, h2, h3, h4, h5 { font-family: sans; }
h1 { color: #800; page-break-before: always; break-before: always; }
h2 { color: #440; page-break-after: avoid; break-after: avoid; }
h3 { color: #080; page-break-after: avoid; break-after: avoid; }
h4 { color: #008; page-break-after: avoid; break-after: avoid; }
h5 { color: #808; page-break-after: avoid; break-after: avoid; }
h1 + p { page-break-inside: avoid; }
h2 + p { page-break-inside: avoid; }
h3 + p { page-break-inside: avoid; }
h4 + p { page-break-inside: avoid; }
h5 + p { page-break-inside: avoid; }
dt {
font-size: large;
color: #404;
font-family: sans;
margin-top: 1em;
margin-bottom: 0.25em;
}
dd, blockquote {
border-left: 1px solid #888;
padding-left: 1em;
border-radius: 0 0 0 1em;
}
p.note {
border: 1px solid #000;
background-color: #eee;
border-radius: 0.5em;
padding: 0.5em;
display: inline-block;
margin-right: 3em;
}
section.outer {
padding-bottom: 1em;
border-bottom: 2px solid #000;
}
section.indent p,dl {
margin-left: 2em;
}
section.indent dl p {
margin-left: 0;
}
p + ul {
margin-left: 2em;
}
@media print {
p {
orphans: 3;
widows: 3;
}
}
</style>
</head> </head>
<body bgcolor="#FFFFFF" <body bgcolor="#FFFFFF"
text="#000000" text="#000000"
link="#0000FF" link="#0000FF"
vlink="#FF0000" vlink="#FF0000"
alink="#FF00FF"> alink="#FF00FF">
<!-- Title -->
<section class="outer">
<header>
<center> <center>
<h1> <h1>
<img src="../../html/images/tuxpaint-title.png" <img src="../../html/images/tuxpaint-title.png"
@ -28,36 +100,68 @@
<p> <p>
2022年1月20日 </p> 2022年1月20日 </p>
</center> </center>
</header>
</section>
<hr> <section class="indent">
<header>
<h2>About SVGs</h2> <h1>About SVGs</h1>
</header>
<p> <p>
SVG (Scalable Vector Graphics) is an open standard used to describe two-dimensional vector graphics. It is great for diagrams and shapes, while PNGs are better for photographs. SVG files are a bit like instructions on how to make an image. This means that they can be resized without looking pixelated or blocky. </p> SVG (Scalable Vector Graphics) is an open standard used to describe two-dimensional vector graphics. It is great for diagrams and shapes, while PNGs are better for photographs. SVG files are a bit like instructions on how to make an image. This means that they can be resized without looking pixelated or blocky. </p>
<p> <p>
For more information, visit: <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p> For more information, visit: <a href="https://www.w3.org/Graphics/SVG/">https://www.w3.org/Graphics/SVG/</a> </p>
</section>
<h2>How to make SVGs</h2> <section class="indent">
<header>
<h1>How to make SVGs</h1>
</header>
<p> <p>
An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program. </p> An excellent tool with which to create SVG images for use in Tux Paint is Inkscape, a high-quality Open Source interactive drawing program available for Windows, macOS, and Linux. There are also other applications that can produce SVGs, both free/open source, and commerical/proprietary. </p>
<p> <dl>
It is likely that is already installed on your system. If not, it should be readily available from your Linux distribution's software repository. If not, or to learn more, visit <a href="http://www.inkscape.org/">http://www.inkscape.org/</a>, respectively. </p> <dt><strong>Open Source</strong></dt>
<dd>
<h2>Mac and Windows users</h2> <ul>
<li> <cite>Inkscape</cite>
&mdash;
<a href="http://www.inkscape.org/">http://www.inkscape.org/</a>
</li>
<li> <cite>Karbon</cite>
&mdash;
<a href="https://calligra.org/karbon/">https://calligra.org/karbon/</a>
</li>
</ul>
</dd>
<dt><strong>Proprietary</strong></dt>
<dd>
<ul> <ul>
<li> <cite>CorelDRAW</cite> <li> <cite>CorelDRAW</cite>
(Corel) (Corel)
&mdash; &mdash;
<a href="http://www.corel.com/">http://www.corel.com/</a> <a href="https://www.coreldraw.com/en/">https://www.coreldraw.com/en/</a>
</li>
<li> <cite>Illustrator</cite> <li> <cite>Illustrator</cite>
(Adobe) (Adobe)
&mdash; &mdash;
<a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a> <a href="http://www.adobe.com/products/illustrator.html">http://www.adobe.com/products/illustrator.html</a>
</li>
<li> <cite>Boxy SVG</cite>
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
<li> <cite>Sketch</cite>
(Sketch B.V.)
&mdash;
<a href="https://boxy-svg.com/">https://boxy-svg.com/</a>
</li>
</ul> </ul>
</dl>
</section>
</body> </body>
</html> </html>

View file

@ -304,5 +304,5 @@ void parse_one_option(struct cfginfo *restrict tmpcfg, const char *str, const ch
exit(53); exit(53);
} }
memcpy(offset+(char*)tmpcfg, &opt, sizeof(char*)); /* FIXME: This causes a warning; should it be 'sizeof(char)', or do we need to have the warning suppressed? -bjk 2021.10.14 */ memcpy((char**) (offset + (char*) tmpcfg), &opt, sizeof(char*));
} }

View file

@ -22,7 +22,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt) (See COPYING.txt)
June 14, 2002 - March 17, 2022 June 14, 2002 - April 18, 2022
*/ */
#include "platform.h" #include "platform.h"
@ -1346,7 +1346,7 @@ static int wheely = 1;
static int keymouse = 0; static int keymouse = 0;
static int no_button_distinction; static int no_button_distinction;
static int button_down; static int button_down;
static int scrolling; static int scrolling_selector, scrolling_tool, scrolling_dialog;
static int promptless_save = SAVE_OVER_UNSET; static int promptless_save = SAVE_OVER_UNSET;
static int _promptless_save_over, _promptless_save_over_ask, _promptless_save_over_new; static int _promptless_save_over, _promptless_save_over_ask, _promptless_save_over_new;
@ -1991,7 +1991,7 @@ typedef enum
#define NUM_EDGES 4 #define NUM_EDGES 4
static SDL_Event scrolltimer_event; static SDL_Event scrolltimer_selector_event, scrolltimer_tool_event, scrolltimer_dialog_event;
int non_left_click_count = 0; int non_left_click_count = 0;
@ -2166,7 +2166,9 @@ static wchar_t *uppercase_w(const wchar_t * restrict const str);
static char *textdir(const char *const str); static char *textdir(const char *const str);
static SDL_Surface *do_render_button_label(const char *const label); static SDL_Surface *do_render_button_label(const char *const label);
static void create_button_labels(void); static void create_button_labels(void);
static Uint32 scrolltimer_callback(Uint32 interval, void *param); static Uint32 scrolltimer_selector_callback(Uint32 interval, void *param);
static Uint32 scrolltimer_tool_callback(Uint32 interval, void *param);
static Uint32 scrolltimer_dialog_callback(Uint32 interval, void *param);
static Uint32 drawtext_callback(Uint32 interval, void *param); static Uint32 drawtext_callback(Uint32 interval, void *param);
static void control_drawtext_timer(Uint32 interval, const char *const text, Uint8 locale_text); static void control_drawtext_timer(Uint32 interval, const char *const text, Uint8 locale_text);
static const char *great_str(void); static const char *great_str(void);
@ -2370,7 +2372,8 @@ SDL_Rect kbd_rect;
int brushflag, xnew, ynew, eraflag, lineflag, magicflag, keybd_flag, keybd_position, keyglobal, initial_y, gen_key_flag, int brushflag, xnew, ynew, eraflag, lineflag, magicflag, keybd_flag, keybd_position, keyglobal, initial_y, gen_key_flag,
ide, activeflag, old_x, old_y; ide, activeflag, old_x, old_y;
int cur_thing; int cur_thing;
SDL_TimerID scrolltimer_dialog = NULL; /* Used by Open, Open->Slideshow, and New dialogs */
Uint32 TP_SDL_MOUSEBUTTONSCROLL;
/** /**
* --- MAIN LOOP! --- * --- MAIN LOOP! ---
*/ */
@ -2399,8 +2402,8 @@ static void mainloop(void)
FILE *fi; FILE *fi;
#endif #endif
Uint32 TP_SDL_MOUSEBUTTONSCROLL = SDL_RegisterEvents(1); TP_SDL_MOUSEBUTTONSCROLL = SDL_RegisterEvents(1);
SDL_TimerID scrolltimer = NULL; SDL_TimerID scrolltimer_selector = NULL, scrolltimer_tool = NULL;
SDL_Event event; SDL_Event event;
SDLKey key; SDLKey key;
SDLMod mod; SDLMod mod;
@ -2432,8 +2435,12 @@ static void mainloop(void)
button_down = 0; button_down = 0;
last_cursor_blink = cur_toggle_count = 0; last_cursor_blink = cur_toggle_count = 0;
texttool_len = 0; texttool_len = 0;
scrolling = 0; scrolling_selector = 0;
scrolltimer = 0; scrolltimer_selector = 0;
scrolling_tool = 0;
scrolltimer_tool = 0;
scrolling_dialog = 0;
scrolltimer_dialog = 0;
val_x = 0; val_x = 0;
val_y = 0; val_y = 0;
valhat_x = 0; valhat_x = 0;
@ -3305,8 +3312,6 @@ static void mainloop(void)
{ {
if (HIT(r_tools)) if (HIT(r_tools))
{ {
if (HIT(real_r_tools)) if (HIT(real_r_tools))
{ {
/* A tool on the left has been pressed! */ /* A tool on the left has been pressed! */
@ -3746,7 +3751,14 @@ static void mainloop(void)
if (!done) if (!done)
magic_switchin(canvas); magic_switchin(canvas);
} }
else if ((event.button.y < r_tools.y + button_h / 2) && tool_scroll > 0) else if (
((event.button.y < r_tools.y + button_h / 2) && tool_scroll > 0) ||
((event.button.y > real_r_tools.y + real_r_tools.h)
&& (tool_scroll < NUM_TOOLS - buttons_tall * gd_tools.cols + gd_tools.cols))
) {
/* Tool up or down scroll buttons */
if (event.button.y < r_tools.y + button_h / 2)
{ {
/* Tool up scroll button */ /* Tool up scroll button */
tool_scroll -= gd_tools.cols; tool_scroll -= gd_tools.cols;
@ -3754,10 +3766,8 @@ static void mainloop(void)
draw_toolbar(); draw_toolbar();
update_screen_rect(&r_tools); update_screen_rect(&r_tools);
} }
else if ((event.button.y > real_r_tools.y + real_r_tools.h) else
&& (tool_scroll < NUM_TOOLS - buttons_tall * gd_tools.cols + gd_tools.cols))
{ {
/* Tool down scroll button */ /* Tool down scroll button */
tool_scroll += gd_tools.cols; tool_scroll += gd_tools.cols;
@ -3765,7 +3775,32 @@ static void mainloop(void)
playsound(screen, 1, SND_SCROLL, 1, SNDPOS_CENTER, SNDDIST_NEAR); playsound(screen, 1, SND_SCROLL, 1, SNDPOS_CENTER, SNDDIST_NEAR);
update_screen_rect(&r_tools); update_screen_rect(&r_tools);
}
if (!scrolling_tool && event.type == SDL_MOUSEBUTTONDOWN)
{
DEBUG_PRINTF("Starting scrolling\n");
memcpy(&scrolltimer_tool_event, &event, sizeof(SDL_Event));
scrolltimer_tool_event.type = TP_SDL_MOUSEBUTTONSCROLL;
/*
* We enable the timer subsystem only when needed (e.g., to use SDL_AddTimer() needed
* for scrolling) then disable it immediately after (e.g., after the timer has fired or
* after SDL_RemoveTimer()) because enabling the timer subsystem in SDL1 has a high
* energy impact on the Mac.
*/
scrolling_tool = 1;
SDL_InitSubSystem(SDL_INIT_TIMER);
scrolltimer_tool =
SDL_AddTimer(REPEAT_SPEED, scrolltimer_tool_callback, (void *)&scrolltimer_tool_event);
}
else
{
DEBUG_PRINTF("Continuing scrolling\n");
scrolltimer_tool =
SDL_AddTimer(REPEAT_SPEED / 3, scrolltimer_tool_callback, (void *)&scrolltimer_tool_event);
}
} }
} }
@ -4536,17 +4571,17 @@ static void mainloop(void)
do_draw = 1; do_draw = 1;
playsound(screen, 1, SND_SCROLL, 1, SNDPOS_RIGHT, SNDDIST_NEAR); playsound(screen, 1, SND_SCROLL, 1, SNDPOS_RIGHT, SNDDIST_NEAR);
if (scrolltimer != NULL) if (scrolltimer_selector != NULL)
{ {
SDL_RemoveTimer(scrolltimer); SDL_RemoveTimer(scrolltimer_selector);
scrolltimer = NULL; scrolltimer_selector = NULL;
} }
if (!scrolling && event.type == SDL_MOUSEBUTTONDOWN) if (!scrolling_selector && event.type == SDL_MOUSEBUTTONDOWN)
{ {
DEBUG_PRINTF("Starting scrolling\n"); DEBUG_PRINTF("Starting scrolling\n");
memcpy(&scrolltimer_event, &event, sizeof(SDL_Event)); memcpy(&scrolltimer_selector_event, &event, sizeof(SDL_Event));
scrolltimer_event.type = TP_SDL_MOUSEBUTTONSCROLL; scrolltimer_selector_event.type = TP_SDL_MOUSEBUTTONSCROLL;
/* /*
* We enable the timer subsystem only when needed (e.g., to use SDL_AddTimer() needed * We enable the timer subsystem only when needed (e.g., to use SDL_AddTimer() needed
@ -4555,29 +4590,29 @@ static void mainloop(void)
* energy impact on the Mac. * energy impact on the Mac.
*/ */
scrolling = 1; scrolling_selector = 1;
SDL_InitSubSystem(SDL_INIT_TIMER); SDL_InitSubSystem(SDL_INIT_TIMER);
scrolltimer = scrolltimer_selector =
SDL_AddTimer(REPEAT_SPEED, scrolltimer_callback, (void *)&scrolltimer_event); SDL_AddTimer(REPEAT_SPEED, scrolltimer_selector_callback, (void *)&scrolltimer_selector_event);
} }
else else
{ {
DEBUG_PRINTF("Continuing scrolling\n"); DEBUG_PRINTF("Continuing scrolling\n");
scrolltimer = scrolltimer_selector =
SDL_AddTimer(REPEAT_SPEED / 3, scrolltimer_callback, (void *)&scrolltimer_event); SDL_AddTimer(REPEAT_SPEED / 3, scrolltimer_selector_callback, (void *)&scrolltimer_selector_event);
} }
if (*thing_scroll == 0 || *thing_scroll / gd_items.cols == num_rows_needed - gd_items.rows) if (*thing_scroll == 0 || *thing_scroll / gd_items.cols == num_rows_needed - gd_items.rows)
{ {
do_setcursor(cursor_arrow); do_setcursor(cursor_arrow);
if (scrolling) if (scrolling_selector)
{ {
if (scrolltimer != NULL) if (scrolltimer_selector != NULL)
{ {
SDL_RemoveTimer(scrolltimer); SDL_RemoveTimer(scrolltimer_selector);
scrolltimer = NULL; scrolltimer_selector = NULL;
} }
scrolling = 0; scrolling_selector = 0;
SDL_QuitSubSystem(SDL_INIT_TIMER); SDL_QuitSubSystem(SDL_INIT_TIMER);
} }
} }
@ -4714,7 +4749,7 @@ static void mainloop(void)
/* Enable or disable color selector: */ /* Enable or disable color selector: */
draw_colors(stamp_colorable(cur_stamp[stamp_group]) draw_colors(stamp_colorable(cur_stamp[stamp_group])
|| stamp_tintable(cur_stamp[stamp_group])); || stamp_tintable(cur_stamp[stamp_group]));
if (!scrolling) if (!scrolling_selector)
{ {
stamp_xor(canvas->w / 2, canvas->h / 2); stamp_xor(canvas->w / 2, canvas->h / 2);
stamp_xored = 1; stamp_xored = 1;
@ -5316,7 +5351,7 @@ static void mainloop(void)
cur_tool == TOOL_FILL) cur_tool == TOOL_FILL)
{ {
/* Left tools scroll */ /* Left tools scroll (via scroll wheel) */
if (hit_test(&r_tools, xpos, ypos) && NUM_TOOLS > most + TOOLOFFSET) if (hit_test(&r_tools, xpos, ypos) && NUM_TOOLS > most + TOOLOFFSET)
{ {
int is_upper = (event.wheel.y > 0); int is_upper = (event.wheel.y > 0);
@ -5363,7 +5398,7 @@ static void mainloop(void)
update_screen_rect(&r_tools); update_screen_rect(&r_tools);
} }
/* Right tool options scroll */ /* Right tool options scroll (via scroll wheel) */
else else
{ {
grid_dims gd_controls; /* might become 2-by-2 */ grid_dims gd_controls; /* might become 2-by-2 */
@ -5585,18 +5620,32 @@ static void mainloop(void)
} }
else if (event.type == SDL_MOUSEBUTTONUP) else if (event.type == SDL_MOUSEBUTTONUP)
{ {
if (scrolling) if (scrolling_selector)
{ {
if (scrolltimer != NULL) if (scrolltimer_selector != NULL)
{ {
SDL_RemoveTimer(scrolltimer); SDL_RemoveTimer(scrolltimer_selector);
scrolltimer = NULL; scrolltimer_selector = NULL;
} }
scrolling = 0; scrolling_selector = 0;
SDL_QuitSubSystem(SDL_INIT_TIMER); SDL_QuitSubSystem(SDL_INIT_TIMER);
/* printf("Killing scrolling\n"); */ DEBUG_PRINTF("Killing selector scrolling\n");
} }
else if (scrolling_tool)
{
if (scrolltimer_tool != NULL)
{
SDL_RemoveTimer(scrolltimer_tool);
scrolltimer_tool = NULL;
}
scrolling_tool = 0;
SDL_QuitSubSystem(SDL_INIT_TIMER);
DEBUG_PRINTF("Killing tool scrolling\n");
}
/* Erase the xor drawed at click */ /* Erase the xor drawed at click */
else if (cur_tool == TOOL_STAMP && stamp_xored && event.button.button < 4) else if (cur_tool == TOOL_STAMP && stamp_xored && event.button.button < 4)
{ {
@ -16336,7 +16385,8 @@ static int do_open(void)
want_erase = 1; want_erase = 1;
} }
} }
else if (event.type == SDL_MOUSEBUTTONDOWN && valid_click(event.button.button)) else if ((event.type == SDL_MOUSEBUTTONDOWN && valid_click(event.button.button)) ||
event.type == TP_SDL_MOUSEBUTTONSCROLL)
{ {
if (event.button.x >= r_ttools.w && event.button.x < WINDOW_WIDTH - r_ttoolopt.w && if (event.button.x >= r_ttools.w && event.button.x < WINDOW_WIDTH - r_ttoolopt.w &&
event.button.y >= img_scroll_up->h && event.button.y < (button_h * buttons_tall + r_ttools.h) - button_h) event.button.y >= img_scroll_up->h && event.button.y < (button_h * buttons_tall + r_ttools.h) - button_h)
@ -16371,9 +16421,15 @@ static int do_open(void)
else if (event.button.x >= (WINDOW_WIDTH - img_scroll_up->w) / 2 && else if (event.button.x >= (WINDOW_WIDTH - img_scroll_up->w) / 2 &&
event.button.x <= (WINDOW_WIDTH + img_scroll_up->w) / 2) event.button.x <= (WINDOW_WIDTH + img_scroll_up->w) / 2)
{ {
if (event.button.y < img_scroll_up->h ||
(event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h &&
event.button.y < (button_h * buttons_tall + r_ttools.h) - img_scroll_up->h))
{
/* Up or down scroll button in Open dialog: */
if (event.button.y < img_scroll_up->h) if (event.button.y < img_scroll_up->h)
{ {
/* Up scroll button: */ /* Up scroll button in Open dialog: */
if (cur > 0) if (cur > 0)
{ {
@ -16391,7 +16447,7 @@ static int do_open(void)
else if (event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h && else if (event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h &&
event.button.y < (button_h * buttons_tall + r_ttools.h) - img_scroll_up->h) event.button.y < (button_h * buttons_tall + r_ttools.h) - img_scroll_up->h)
{ {
/* Down scroll button: */ /* Down scroll button in Open dialog: */
if (cur < num_files - 16) if (cur < num_files - 16)
{ {
@ -16406,6 +16462,38 @@ static int do_open(void)
if (which < cur) if (which < cur)
which = which + 4; which = which + 4;
} }
if (scrolltimer_dialog != NULL)
{
SDL_RemoveTimer(scrolltimer_dialog);
scrolltimer_dialog = NULL;
}
if (!scrolling_dialog && event.type == SDL_MOUSEBUTTONDOWN)
{
DEBUG_PRINTF("Starting scrolling\n");
memcpy(&scrolltimer_dialog_event, &event, sizeof(SDL_Event));
scrolltimer_dialog_event.type = TP_SDL_MOUSEBUTTONSCROLL;
/*
* We enable the timer subsystem only when needed (e.g., to use SDL_AddTimer() needed
* for scrolling) then disable it immediately after (e.g., after the timer has fired or
* after SDL_RemoveTimer()) because enabling the timer subsystem in SDL1 has a high
* energy impact on the Mac.
*/
scrolling_dialog = 1;
SDL_InitSubSystem(SDL_INIT_TIMER);
scrolltimer_dialog =
SDL_AddTimer(REPEAT_SPEED, scrolltimer_dialog_callback, (void *)&scrolltimer_dialog_event);
}
else
{
DEBUG_PRINTF("Continuing scrolling\n");
scrolltimer_dialog =
SDL_AddTimer(REPEAT_SPEED / 3, scrolltimer_dialog_callback, (void *)&scrolltimer_dialog_event);
}
}
} }
else if (event.button.x >= r_ttools.w && event.button.x < r_ttools.w + button_w && else if (event.button.x >= r_ttools.w && event.button.x < r_ttools.w + button_w &&
event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h && event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h &&
@ -16459,12 +16547,6 @@ static int do_open(void)
} }
#ifdef __ANDROID__ #ifdef __ANDROID__
start_motion_convert(event); start_motion_convert(event);
#endif
}
else if (event.type == SDL_MOUSEBUTTONUP)
{
#ifdef __ANDROID__
stop_motion_convert(event);
#endif #endif
} }
else if (event.type == SDL_MOUSEWHEEL && wheely) else if (event.type == SDL_MOUSEWHEEL && wheely)
@ -16557,6 +16639,24 @@ static int do_open(void)
oldpos_y = event.button.y; oldpos_y = event.button.y;
} }
else if (event.type == SDL_MOUSEBUTTONUP)
{
#ifdef __ANDROID__
stop_motion_convert(event);
#endif
if (scrolling_dialog)
{
if (scrolltimer_dialog != NULL)
{
SDL_RemoveTimer(scrolltimer_dialog);
scrolltimer_dialog = NULL;
}
scrolling_dialog = 0;
SDL_QuitSubSystem(SDL_INIT_TIMER);
DEBUG_PRINTF("Killing dialog scrolling\n");
}
}
else if (event.type == SDL_JOYAXISMOTION) else if (event.type == SDL_JOYAXISMOTION)
handle_joyaxismotion(event, &motioner, &val_x, &val_y); handle_joyaxismotion(event, &motioner, &val_x, &val_y);
@ -16568,7 +16668,7 @@ static int do_open(void)
else if (event.type == SDL_JOYBUTTONDOWN || event.type == SDL_JOYBUTTONUP) else if (event.type == SDL_JOYBUTTONDOWN || event.type == SDL_JOYBUTTONUP)
handle_joybuttonupdown(event, oldpos_x, oldpos_y); handle_joybuttonupdown(event, oldpos_x, oldpos_y);
} } /* while (SDL_PollEvent(&event)) */
if (motioner | hatmotioner) if (motioner | hatmotioner)
handle_motioners(oldpos_x, oldpos_y, motioner, hatmotioner, old_hat_ticks, val_x, val_y, valhat_x, handle_motioners(oldpos_x, oldpos_y, motioner, hatmotioner, old_hat_ticks, val_x, val_y, valhat_x,
@ -17350,7 +17450,8 @@ static int do_slideshow(void)
playsound(screen, 1, SND_CLICK, 1, SNDPOS_RIGHT, SNDDIST_NEAR); playsound(screen, 1, SND_CLICK, 1, SNDPOS_RIGHT, SNDDIST_NEAR);
} }
} }
else if (event.type == SDL_MOUSEBUTTONDOWN && valid_click(event.button.button)) else if ((event.type == SDL_MOUSEBUTTONDOWN && valid_click(event.button.button)) ||
event.type == TP_SDL_MOUSEBUTTONSCROLL)
{ {
if (event.button.x >= r_ttools.w && event.button.x < WINDOW_WIDTH - r_ttoolopt.w && if (event.button.x >= r_ttools.w && event.button.x < WINDOW_WIDTH - r_ttoolopt.w &&
event.button.y >= img_scroll_up->h && event.button.y < (button_h * buttons_tall + r_ttools.h - button_h)) event.button.y >= img_scroll_up->h && event.button.y < (button_h * buttons_tall + r_ttools.h - button_h))
@ -17394,6 +17495,13 @@ static int do_slideshow(void)
else if (event.button.x >= (WINDOW_WIDTH - img_scroll_up->w) / 2 && else if (event.button.x >= (WINDOW_WIDTH - img_scroll_up->w) / 2 &&
event.button.x <= (WINDOW_WIDTH + img_scroll_up->w) / 2) event.button.x <= (WINDOW_WIDTH + img_scroll_up->w) / 2)
{ {
if (event.button.y < img_scroll_up->h ||
(event.button.y >= (button_h * buttons_tall + r_ttools.h - button_h) &&
event.button.y < (button_h * buttons_tall + r_ttools.h - img_scroll_down->h))
)
{
/* Up or Down scroll button in Slideshow dialog: */
if (event.button.y < img_scroll_up->h) if (event.button.y < img_scroll_up->h)
{ {
/* Up scroll button: */ /* Up scroll button: */
@ -17430,6 +17538,38 @@ static int do_slideshow(void)
which = which + 4; which = which + 4;
} }
} }
if (scrolltimer_dialog != NULL)
{
SDL_RemoveTimer(scrolltimer_dialog);
scrolltimer_dialog = NULL;
}
if (!scrolling_dialog && event.type == SDL_MOUSEBUTTONDOWN)
{
DEBUG_PRINTF("Starting scrolling\n");
memcpy(&scrolltimer_dialog_event, &event, sizeof(SDL_Event));
scrolltimer_dialog_event.type = TP_SDL_MOUSEBUTTONSCROLL;
/*
* We enable the timer subsystem only when needed (e.g., to use SDL_AddTimer() needed
* for scrolling) then disable it immediately after (e.g., after the timer has fired or
* after SDL_RemoveTimer()) because enabling the timer subsystem in SDL1 has a high
* energy impact on the Mac.
*/
scrolling_dialog = 1;
SDL_InitSubSystem(SDL_INIT_TIMER);
scrolltimer_dialog =
SDL_AddTimer(REPEAT_SPEED, scrolltimer_dialog_callback, (void *)&scrolltimer_dialog_event);
}
else
{
DEBUG_PRINTF("Continuing scrolling\n");
scrolltimer_dialog =
SDL_AddTimer(REPEAT_SPEED / 3, scrolltimer_dialog_callback, (void *)&scrolltimer_dialog_event);
}
}
else if (event.button.x >= r_ttools.w && event.button.x < r_ttools.w + button_w && else if (event.button.x >= r_ttools.w && event.button.x < r_ttools.w + button_w &&
event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h && event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h &&
event.button.y < (button_h * buttons_tall + r_ttools.h)) event.button.y < (button_h * buttons_tall + r_ttools.h))
@ -17552,12 +17692,6 @@ static int do_slideshow(void)
} }
#ifdef __ANDROID__ #ifdef __ANDROID__
start_motion_convert(event); start_motion_convert(event);
#endif
}
else if (event.type == SDL_MOUSEBUTTONUP)
{
#ifdef __ANDROID__
stop_motion_convert(event);
#endif #endif
} }
else if (event.type == SDL_MOUSEWHEEL && wheely) else if (event.type == SDL_MOUSEWHEEL && wheely)
@ -17645,6 +17779,26 @@ static int do_slideshow(void)
oldpos_x = event.button.x; oldpos_x = event.button.x;
oldpos_y = event.button.y; oldpos_y = event.button.y;
} }
else if (event.type == SDL_MOUSEBUTTONUP)
{
#ifdef __ANDROID__
stop_motion_convert(event);
#endif
if (scrolling_dialog)
{
if (scrolltimer_dialog != NULL)
{
SDL_RemoveTimer(scrolltimer_dialog);
scrolltimer_dialog = NULL;
}
scrolling_dialog = 0;
SDL_QuitSubSystem(SDL_INIT_TIMER);
DEBUG_PRINTF("Killing dialog scrolling\n");
}
}
else if (event.type == SDL_JOYAXISMOTION) else if (event.type == SDL_JOYAXISMOTION)
handle_joyaxismotion(event, &motioner, &val_x, &val_y); handle_joyaxismotion(event, &motioner, &val_x, &val_y);
@ -18799,19 +18953,59 @@ static char *textdir(const char *const str)
/** /**
* FIXME * FIXME
*/ */
/* Scroll Timer */ /* Scroll Timer for Tools */
static Uint32 scrolltimer_callback(Uint32 interval, void *param) static Uint32 scrolltimer_selector_callback(Uint32 interval, void *param)
{ {
/* printf("scrolltimer_callback(%d) -- ", interval); */ /* printf("scrolltimer_selector_callback(%d) -- ", interval); */
if (scrolling) if (scrolling_selector)
{ {
DEBUG_PRINTF("(Still scrolling)\n"); DEBUG_PRINTF("(Still scrolling selector)\n");
SDL_PushEvent((SDL_Event *) param); SDL_PushEvent((SDL_Event *) param);
return interval; return interval;
} }
else else
{ {
DEBUG_PRINTF("(all done scrolling)\n"); DEBUG_PRINTF("(all done scrolling selector)\n");
return 0;
}
}
/**
* FIXME
*/
/* Scroll Timer for Selector */
static Uint32 scrolltimer_tool_callback(Uint32 interval, void *param)
{
/* printf("scrolltimer_tool_callback(%d)\n", interval); */
if (scrolling_tool)
{
DEBUG_PRINTF("(Still scrolling tool)\n");
SDL_PushEvent((SDL_Event *) param);
return interval;
}
else
{
DEBUG_PRINTF("(all done scrolling tool)\n");
return 0;
}
}
/**
* FIXME
*/
/* Scroll Timer for Dialogs (Open & New) */
static Uint32 scrolltimer_dialog_callback(Uint32 interval, void *param)
{
if (scrolling_dialog)
{
DEBUG_PRINTF("(Still scrolling dialog)\n");
SDL_PushEvent((SDL_Event *) param);
return interval;
}
else
{
DEBUG_PRINTF("(all done scrolling dialog)\n");
return 0; return 0;
} }
} }
@ -21393,7 +21587,8 @@ static int do_new_dialog(void)
playsound(screen, 1, SND_CLICK, 1, SNDPOS_RIGHT, SNDDIST_NEAR); playsound(screen, 1, SND_CLICK, 1, SNDPOS_RIGHT, SNDDIST_NEAR);
} }
} }
else if (event.type == SDL_MOUSEBUTTONDOWN && valid_click(event.button.button)) else if ((event.type == SDL_MOUSEBUTTONDOWN && valid_click(event.button.button)) ||
event.type == TP_SDL_MOUSEBUTTONSCROLL)
{ {
if (event.button.x >= r_ttools.w && event.button.x < WINDOW_WIDTH - r_ttoolopt.w && if (event.button.x >= r_ttools.w && event.button.x < WINDOW_WIDTH - r_ttoolopt.w &&
event.button.y >= img_scroll_up->h && event.button.y < (button_h * buttons_tall + r_ttools.h - button_h)) event.button.y >= img_scroll_up->h && event.button.y < (button_h * buttons_tall + r_ttools.h - button_h))
@ -21424,6 +21619,13 @@ static int do_new_dialog(void)
else if (event.button.x >= (WINDOW_WIDTH - img_scroll_up->w) / 2 && else if (event.button.x >= (WINDOW_WIDTH - img_scroll_up->w) / 2 &&
event.button.x <= (WINDOW_WIDTH + img_scroll_up->w) / 2) event.button.x <= (WINDOW_WIDTH + img_scroll_up->w) / 2)
{ {
if (event.button.y < img_scroll_up->h ||
(event.button.y >= (button_h * buttons_tall + r_ttools.h - button_h) &&
event.button.y < (button_h * buttons_tall + r_ttools.h - img_scroll_up->h))
)
{
/* Up or Down scroll button in New dialog: */
if (event.button.y < img_scroll_up->h) if (event.button.y < img_scroll_up->h)
{ {
/* Up scroll button: */ /* Up scroll button: */
@ -21459,6 +21661,38 @@ static int do_new_dialog(void)
if (which < cur) if (which < cur)
which = which + 4; which = which + 4;
} }
if (scrolltimer_dialog != NULL)
{
SDL_RemoveTimer(scrolltimer_dialog);
scrolltimer_dialog = NULL;
}
if (!scrolling_dialog && event.type == SDL_MOUSEBUTTONDOWN)
{
DEBUG_PRINTF("Starting scrolling\n");
memcpy(&scrolltimer_dialog_event, &event, sizeof(SDL_Event));
scrolltimer_dialog_event.type = TP_SDL_MOUSEBUTTONSCROLL;
/*
* We enable the timer subsystem only when needed (e.g., to use SDL_AddTimer() needed
* for scrolling) then disable it immediately after (e.g., after the timer has fired or
* after SDL_RemoveTimer()) because enabling the timer subsystem in SDL1 has a high
* energy impact on the Mac.
*/
scrolling_dialog = 1;
SDL_InitSubSystem(SDL_INIT_TIMER);
scrolltimer_dialog =
SDL_AddTimer(REPEAT_SPEED, scrolltimer_dialog_callback, (void *)&scrolltimer_dialog_event);
}
else
{
DEBUG_PRINTF("Continuing scrolling\n");
scrolltimer_dialog =
SDL_AddTimer(REPEAT_SPEED / 3, scrolltimer_dialog_callback, (void *)&scrolltimer_dialog_event);
}
}
} }
else if (event.button.x >= r_ttools.w && event.button.x < r_ttools.w + button_w && else if (event.button.x >= r_ttools.w && event.button.x < r_ttools.w + button_w &&
event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h && event.button.y >= (button_h * buttons_tall + r_ttools.h) - button_h &&
@ -21482,12 +21716,6 @@ static int do_new_dialog(void)
} }
#ifdef __ANDROID__ #ifdef __ANDROID__
start_motion_convert(event); start_motion_convert(event);
#endif
}
else if (event.type == SDL_MOUSEBUTTONUP)
{
#ifdef __ANDROID__
stop_motion_convert(event);
#endif #endif
} }
else if (event.type == SDL_MOUSEWHEEL && wheely) else if (event.type == SDL_MOUSEWHEEL && wheely)
@ -21577,6 +21805,25 @@ static int do_new_dialog(void)
oldpos_y = event.button.y; oldpos_y = event.button.y;
} }
else if (event.type == SDL_MOUSEBUTTONUP)
{
#ifdef __ANDROID__
stop_motion_convert(event);
#endif
if (scrolling_dialog)
{
if (scrolltimer_dialog != NULL)
{
SDL_RemoveTimer(scrolltimer_dialog);
scrolltimer_dialog = NULL;
}
scrolling_dialog = 0;
SDL_QuitSubSystem(SDL_INIT_TIMER);
DEBUG_PRINTF("Killing dialog scrolling\n");
}
}
else if (event.type == SDL_JOYAXISMOTION) else if (event.type == SDL_JOYAXISMOTION)
handle_joyaxismotion(event, &motioner, &val_x, &val_y); handle_joyaxismotion(event, &motioner, &val_x, &val_y);
@ -24640,10 +24887,9 @@ static void load_info_about_label_surface(FILE * lfi)
char *tmp_fgets_return; char *tmp_fgets_return;
Uint8 a; Uint8 a;
#ifdef WIN32 #ifdef WIN32
char *tmpstr;
wchar_t *wtmpstr; wchar_t *wtmpstr;
#endif #endif
char *tmpstr;
/* Clear label surface */ /* Clear label surface */
@ -24665,6 +24911,13 @@ static void load_info_about_label_surface(FILE * lfi)
/* Read count of label nodes: */ /* Read count of label nodes: */
tmp_fscanf_return = fscanf(lfi, "%d\n", &list_ctr); tmp_fscanf_return = fscanf(lfi, "%d\n", &list_ctr);
if (list_ctr <= 0)
{
fprintf(stderr, "Unexpected! Count of label notes is <= 0 (%d)!\n", list_ctr);
fclose(lfi);
return;
}
/* Read saved canvas width/height, so we can scale to the current canvas /* Read saved canvas width/height, so we can scale to the current canvas
(in case it changed due to window size / fullscreen resolution changes, (in case it changed due to window size / fullscreen resolution changes,
larger UI button size, etc. */ larger UI button size, etc. */
@ -24672,6 +24925,13 @@ static void load_info_about_label_surface(FILE * lfi)
tmp_fscanf_return = fscanf(lfi, "%d\n\n", &tmp_scale_h); tmp_fscanf_return = fscanf(lfi, "%d\n\n", &tmp_scale_h);
(void)tmp_fscanf_return; (void)tmp_fscanf_return;
if (tmp_scale_w <= 0 || tmp_scale_h <= 0)
{
fprintf(stderr, "Unexpected! Saved canvas dimensions %d x %d!\n", tmp_scale_w, tmp_scale_h);
fclose(lfi);
return;
}
/* Calculate canvas aspect ratios & such */ /* Calculate canvas aspect ratios & such */
old_width = tmp_scale_w; old_width = tmp_scale_w;
old_height = tmp_scale_h; old_height = tmp_scale_h;
@ -24684,26 +24944,27 @@ static void load_info_about_label_surface(FILE * lfi)
else else
new_to_old_ratio = (float)new_height / old_height; new_to_old_ratio = (float)new_height / old_height;
/* Read the labels' text: */
size_t nwchar;
#ifdef WIN32 #ifdef WIN32
tmpstr = malloc(1024);
wtmpstr = malloc(1024); wtmpstr = malloc(1024);
#endif #endif
tmpstr = malloc(1024);
/* Read the labels' text: */
for (k = 0; k < list_ctr; k++) for (k = 0; k < list_ctr; k++)
{ {
new_node = malloc(sizeof(struct label_node)); new_node = malloc(sizeof(struct label_node));
tmp_fscanf_return = fscanf(lfi, "%u\n", &new_node->save_texttool_len); new_node->save_texttool_len = atoi(fgets(tmpstr, 5, lfi));
#ifdef DEBUG #ifdef DEBUG
printf("Reading %d wide chars\n", new_node->save_texttool_len); fflush(stdout); printf("Reading %d wide chars\n", new_node->save_texttool_len); fflush(stdout);
#endif #endif
if (new_node->save_texttool_len >= 1024)
{
fprintf(stderr, "Unexpected! Saved text length is >= 1024 (%u!)\n", new_node->save_texttool_len);
free(new_node);
#ifdef WIN32 #ifdef WIN32
/* Using fancy "%[]" operator to scan until the end of a line */ /* Using fancy "%[]" operator to scan until the end of a line */
tmp_fscanf_return = fscanf(lfi, "%[^\n]\n", tmpstr); tmp_fscanf_return = fscanf(lfi, "%[^\n]\n", tmpstr);
@ -24711,6 +24972,8 @@ static void load_info_about_label_surface(FILE * lfi)
for (l = 0; l < new_node->save_texttool_len; l++) for (l = 0; l < new_node->save_texttool_len; l++)
new_node->save_texttool_str[l] = wtmpstr[l]; new_node->save_texttool_str[l] = wtmpstr[l];
new_node->save_texttool_str[l] = L'\0'; new_node->save_texttool_str[l] = L'\0';
free(tmpstr);
free(wtmpstr);
#elif defined(__ANDROID__) #elif defined(__ANDROID__)
wchar_t tmp_char; wchar_t tmp_char;
for (l = 0; l < new_node->save_texttool_len; l++) for (l = 0; l < new_node->save_texttool_len; l++)
@ -24727,31 +24990,26 @@ static void load_info_about_label_surface(FILE * lfi)
#ifdef DEBUG #ifdef DEBUG
printf("Read: \"%ls\"\n", new_node->save_texttool_str); fflush(stdout); printf("Read: \"%ls\"\n", new_node->save_texttool_str); fflush(stdout);
#endif #endif
fclose(lfi);
/* If the string is shorter than what we expect (new_node->save_texttool_len), return;
then it must have been prefixed with spaces that we lost. */ }
nwchar = wcslen(new_node->save_texttool_str); else
if (nwchar < new_node->save_texttool_len)
{ {
wchar_t *wtmpstr; #ifdef WIN32
size_t diff, i; /* Using fancy "%[]" operator to scan until the end of a line */
tmp_fscanf_return = fscanf(lfi, "%[^\n]\n", tmpstr);
wtmpstr = malloc(1024); mbstowcs(wtmpstr, tmpstr, 1024);
diff = new_node->save_texttool_len - nwchar; for (l = 0; l < new_node->save_texttool_len; l++)
new_node->save_texttool_str[l] = wtmpstr[l];
for (i = 0; i < diff; i++) new_node->save_texttool_str[l] = L'\0';
wtmpstr[i] = L' '; #else
/* Using fancy "%[]" operator to scan until the end of a line */
for (i = 0; i <= nwchar; i++) tmp_fscanf_return = fscanf(lfi, "%l[^\n]\n", new_node->save_texttool_str);
wtmpstr[i + diff] = new_node->save_texttool_str[i]; #endif
memcpy(new_node->save_texttool_str, wtmpstr, sizeof(wchar_t) * (new_node->save_texttool_len + 1));
free(wtmpstr);
#ifdef DEBUG #ifdef DEBUG
printf("Fixed \"%ls\"\n", new_node->save_texttool_str); fflush(stdout); printf("Read: \"%ls\"\n", new_node->save_texttool_str); fflush(stdout);
#endif #endif
}
/* Read the label's color (RGB) */ /* Read the label's color (RGB) */
tmp_fscanf_return = fscanf(lfi, "%u\n", &l); tmp_fscanf_return = fscanf(lfi, "%u\n", &l);
@ -24793,9 +25051,21 @@ static void load_info_about_label_surface(FILE * lfi)
#ifdef DEBUG #ifdef DEBUG
printf("Original label size %dx%d\n", new_node->save_width, new_node->save_height); printf("Original label size %dx%d\n", new_node->save_width, new_node->save_height);
#endif #endif
if (new_node->save_width > 8192 || new_node->save_height > 8192)
{
fprintf(stderr, "Unexpected! Save dimensions are (%u x %u!)\n", new_node->save_width, new_node->save_height);
free(new_node);
free(tmpstr);
#ifdef WIN32
free(wtmpstr);
#endif
fclose(lfi);
return;
}
/* Read the label's font */ /* Read the label's font */
tmp_fscanf_return = fscanf(lfi, "%d\n", &new_node->save_cur_font); tmp_fscanf_return = fscanf(lfi, "%d\n", &new_node->save_cur_font);
/* FIXME: This seems wrong! -bjk 2022.04.02 */
new_node->save_cur_font = 0; new_node->save_cur_font = 0;
new_node->save_font_type = malloc(64); new_node->save_font_type = malloc(64);
@ -24871,16 +25141,17 @@ static void load_info_about_label_surface(FILE * lfi)
highlighted_label_node = current_label_node; highlighted_label_node = current_label_node;
simply_render_node(current_label_node); simply_render_node(current_label_node);
} }
}
first_label_node_in_redo_stack = NULL; first_label_node_in_redo_stack = NULL;
fclose(lfi); fclose(lfi);
#ifdef WIN32
free(tmpstr); free(tmpstr);
#ifdef WIN32
free(wtmpstr); free(wtmpstr);
#endif #endif
if (font_thread_done) if (font_thread_done)
set_label_fonts(); set_label_fonts();
} }