SVG image buttons

For discussions about programming, programming questions/advice, and projects that don't really have anything to do with Puppy.
Message
Author
User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#16 Post by don570 »

I've been using bsvg program and I find I can get all the icon images
to generate in one folder by running the following script...

For color icons see the built-in help for bsvg

Code: Select all

#!/bin/bash
mkdir -p /tmp/SVGicons

bsvg -i  |  sed '1,/Available/d' >  /tmp/test.tmp

cat /tmp/test.tmp |
while read -r COLUMN1 COLUMN2 COLUMN3 COLUMN4 ;do

cd /tmp/SVGicons/
bsvg  $COLUMN1 
bsvg  $COLUMN2 
bsvg  $COLUMN3 
bsvg  $COLUMN4
done

___________________________________________________


I wrote a SVG-viewer to quickly check the folder of images

http://www.murga-linux.com/puppy/viewto ... 827#733827

___________________________________________________

User avatar
vovchik
Posts: 1507
Joined: Tue 24 Oct 2006, 00:02
Location: Ukraine

#17 Post by vovchik »

Dear Don,

Thanks for using bsvg. I did supply a dump script with the pet, I think, but if not, here it is:

Code: Select all

#!/bin/bash

# *****************************************************
# PROGRAM:	bsvg_gen
# PURPOSE:	to dump all svgs from bsvg library
# AUTHOR:		vovchik (Puppy Linux forum)
# MODDED:		
# DEPENDS:	bash, bsvg
# PLATFORM:	Puppy Linux (actually, any *nix)
# DATE:		25-06-2012
# NOTES:		you can specify fill and stoke colors
# 			ie: bsvg_gen all red black, otherwise
# 			the default of black and grey
# *****************************************************


# ***********************
# FUNCTIONS
# ***********************

# ------------------
function usage()
# ------------------
{
	# show help
	echo
	echo "bsvg_dump generates a dump (in your current directory)"
	echo "of all svgs contained in the bsvg library."
	echo
	echo "Usage:    bsvg_gen dump [fill color] [stroke color]"
	echo "Examples: bsvg_gen dump red black"
	echo "          bsvg_gen dump \"#6c6c6c\" red"
	echo "          bsvg_gen dump none red"
	echo
	echo "Run plain 'bsvg' for help with the color arguments."
	echo
}

# ------------------
function chk_args()
# ------------------
{
	# check user input
	dump="$1"
	case $dump in
		"dump")
			fill="$2"
			stroke="$3"
		;;
		*)
			usage
			exit 1
		;;
	esac
}

# ------------------
function mk_icons()
# ------------------
{
	# generate complete icon set
	# in current working directory
	for f in $(bsvg -I); do
		bsvg "$f" "$fill" "$stroke" 
	done
}

# ***********************
# END FUNCTIONS
# ***********************


# ***********************
# MAIN
# ***********************

chk_args $1 $2 $3
mk_icons
exit 0

# ***********************
# END MAIN
# ***********************
With kind regards,
vovchik

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#18 Post by don570 »

I'll try out your script. I'm working on putting your icons on left side of
button. I'm nearly finished.

Image
Image
Image
_________________________________

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#19 Post by don570 »

I have packaged the free CNS icons to be used
as well.

FreeCNS icons-2.0.pet
Here is some more examples...

Image

Image

Image

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#20 Post by don570 »

Here is script to make the buttons.

Note: All SVG icons MUST be in /usr/share/icons/SVGicons/

First the possible colors...
bsvg -C [lists svg 'named colors' (1 color per line)]
bsvg firefox red pink - [prints to stdout and does not create file]

SVG 'named colors' (148):

aliceblue antiquewhite aqua aquamarine
azure beige bisque black
blanchedalmond blue blueviolet brown
burlywood cadetblue chartreuse chocolate
coral cornflowerblue cornsilk crimson
cyan darkblue darkcyan darkgoldenrod
darkgray darkgreen darkgrey darkkhaki
darkmagenta darkolivegreen darkorange darkorchid
darkred darksalmon darkseagreen darkslateblue
darkslategray darkslategrey darkturquoise darkviolet
deeppink deepskyblue dimgray dimgrey
dodgerblue firebrick floralwhite forestgreen
fuchsia gainsboro ghostwhite gold
goldenrod gray green greenyellow
grey honeydew hotpink indianred
indigo ivory khaki lavender
lavenderblush lawngreen lemonchiffon lightblue
lightcoral lightcyan lightgoldenrodyello lightgray
lightgreen lightgrey lightpink lightsalmon
lightseagreen lightskyblue lightslategray lightslategrey
lightsteelblue lightyellow lime limegreen
linen magenta maroon mediumaquamarine
mediumblue mediumorchid mediumpurple mediumseagreen
mediumslateblue mediumspringgreen mediumturquoise mediumvioletred
midnightblue mintcream mistyrose moccasin
navajowhite navy oldlace olive
olivedrab orange orangered orchid
palegoldenrod palegreen paleturquoise palevioletred
papayawhip peachpuff peru pink
plum powderblue purple red
rosybrown royalblue saddlebrown salmon
sandybrown seagreen seashell sienna
silver skyblue slateblue slategray
slategrey snow springgreen steelblue
tan teal thistle tomato
turquoise violet wheat white
whitesmoke yellow yellowgreen none


Here is example of using script...

Code: Select all

./button-svg.sh DejaVu 10  "Forward" .4 magenta 2 black  Forward2.svg white  "#00FG00"
Attachments
button-svg.gz
remove fake .gz extension
(2.76 KiB) Downloaded 389 times
Last edited by don570 on Mon 11 Nov 2013, 21:25, edited 2 times in total.

User avatar
vovchik
Posts: 1507
Joined: Tue 24 Oct 2006, 00:02
Location: Ukraine

#21 Post by vovchik »

Dear Don,

Very nice work...so thanks.

With kind regards,
vovchik

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#22 Post by don570 »

you will just exit if there is no existing folder

/usr/share/icons/SVGicons/
______________________________________________________

To use the script without an icon, don't put in icon name. Example...

Code: Select all

./button-svg.sh DejaVu 10  "Forward" .4 magenta 2 black
or just put 'none' as your icon.

If you misspell the icon name then no icon will show on left side of button.
__________________________________________________________

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#23 Post by don570 »

I put all the svg icons in one easy to download and install package.
vovchik's icons were generated with black and red (optional colors)

See several posts below for download of pet package
of compatible icons.

I recommend that for dark colors like black,blue etc , use opacity =0.1

If you want a grey rectangle then try the color 'white'
and opacity high(=0.7)


Another example...

Code: Select all

./button-svg.sh DejaVu 10  "No" .2 teal 2 black LightBulb.svg  white  black
Image

_____________________________________________
Last edited by don570 on Thu 14 Nov 2013, 00:51, edited 2 times in total.

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#24 Post by don570 »

I have found a method to create compatible SVG image icons that
can be used in my buttons.

Just download the package below and read the ReadMe file.

Instructions to make your own compatible SVG icon...

-install script 'button-svg.sh' found in icon_creation.tar.gz package.
Make sure it is executable.

-create image with inkscape(lite) using template.svg as a template.
It's very important to use template.svg since this affects the size.
Stay well inside border lines of document frame.(see inkscapelite-example.png)


Image

-save to disk. Open template.svg file with texteditor.
Remove section(s) which describe paths,polygons,rectangles.
Place these code lines in the my_image.svg file.(see help-image.png)

Image

-save the file with an extension .svg
in the folder /usr/share/icons/SVGicons/
You may check to see if it will open properly with mtpaint or inkscape(lite)
(see Screenshot.png for image of the final button)

Image

Notes:

The name of icon mustn't have spaces in it.
Inkscapelite has a bug with forming a circle with a stroked
edge.

- run the script example:

button-svg.sh DejaVu 10 "No" .2 blue 2 black my_image.svg black white

Explanation of parameters:

# ${1} font-family example: DejaVu, Sans or Times
# ${2} round corners - recommend 0 to 15 - 0 is square corner
# ${3} quoted textstring
# ${4} opacity of rectangle - set low for dark colors
# ${5} rectangle color - quoted hex or English word ---> bsvg -c
# ${6} stroke width -normally 2 - set to zero if no border stroke is desired
STROKECOLOR=${7} - normally black
ICON_NAME=${8} - fill in name (if 'none' then no icon will show)
ICON_FILL_COLOR=${9}
ICON_STROKE_COLOR=${10}



____________________________________________________
Attachments
icon_creation.tar.gz
script and templates to make compatible SVG image icons.
(50.08 KiB) Downloaded 342 times

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#25 Post by don570 »

I have new 'compatible SVG icons package'. I added a new icon
'alarmclock.svg' that I made using inkscape in Ubuntu.
(Warning ! Gradients should be avoided in the making of svg icon)

Here is command line that generated the button

Code: Select all

 button-svg.sh DejaVu 10 "My Alarm" .2 teal  2 black alarmclock.svg white black 
Image

________________________________________________

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#26 Post by don570 »

I added 13 additional icons in version 1.2 of compatible SVG icons.

Code: Select all

alarmclock2.svg
clock.svg
delete.svg
envelop.svg
eye.svg
floppy.svg
letter.svg
padlock.svg
paperclip.svg
picture2.svg
speaker.svg
suitcase.svg
warning2.svg

Note when making compatible icons--->

Do not use gradients or grouping of objects.

Use full program Inkscape rather than Inkscapelite
since there is a lot more features.
__________________________________________

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#27 Post by don570 »

Here is collection of SVG icons to use for practice.
Attachments
compatible-SVGicons-1.2.tar.gz
freeware svg icons
(247.72 KiB) Downloaded 184 times
Last edited by don570 on Sat 23 Jul 2016, 19:21, edited 1 time in total.

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#28 Post by technosaurus »

Some of us have been making Public Domain svg icons fior use in themes (mostly single svg paths that can be layered) and I created a tool to build them with a unified theme (requires a bit of shell scripting if you want to generate all of them). Ahyhow they are
here There is quite a collection now.

You can/should ignore the most recent posts that involve using svg paths for text - that is something I wanted to have for nanosvg and libsvgtiny, neither of which handle <text> tags. It also ensures that my crappy font looks just as crappy from one SVG engine to the next regardless of its builtin or loaded font.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
don570
Posts: 5528
Joined: Wed 10 Mar 2010, 19:58
Location: Ontario

#29 Post by don570 »

They look professional.
I'll try to adapt them to my template.
I explain my template a few post above.

They need to be compatible to my template
or they don't work with my script.

____________________________________

Post Reply