better xschem icon: added shapemask for "transparent" background

This commit is contained in:
Stefan Schippers 2020-11-10 13:17:25 +01:00
parent f837353429
commit 61dd4e99b0
5 changed files with 108 additions and 102 deletions

View File

@ -99,7 +99,7 @@ unsigned char pixdata_init[22][32]={ /* fill patterns... indexed by laynumb.
GC *gcstipple,*gc, gctiled;
Display *display;
XRectangle xrect[1] = {{0,0,0,0}};
Pixmap cad_icon_pixmap=0, *pixmap,save_pixmap; /* save_pixmap used to restore window */
Pixmap cad_icon_pixmap=0, cad_icon_mask=0, *pixmap,save_pixmap; /* save_pixmap used to restore window */
XPoint *gridpoint; /* pointer to array of gridpoints, used in draw() */
XColor xcolor_array[256];
Visual *visual;

View File

@ -23,55 +23,55 @@
/* XPM */
char *cad_icon[] = {
/* columns rows colors chars-per-pixel */
"60 41 6 1",
" c black",
". c #78787C7C7878",
"X c #0000A8A8E8E8",
"o c #B0B000000000",
"O c #8888DCDC0000",
"56 42 6 1 ",
" c #BB2200",
". c #FA0000",
"X c red",
"o c #229900",
"O c #0044EE",
"+ c None",
/* pixels */
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+++++++.+++++++++++.+++++++++++.+++++++++++.+++++++++++.++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+++++++++++++++++++OOOO+++++++++++++++++++++OOOO++++++++++++",
"++++++++++++++++++++O+++++++++++++++++++++++++O+++++++++++++",
"++++++++++++++++++++o++++++++++++++++++++++++oO+++++++++++++",
"++++++++++++++++++O+O++++++++++++++++++++++O++O+++++++++++++",
"++++++++++++++++++OOO++++++++++++++++++++++OOOO+++++++++++++",
"+++++++++++++++++OO+++++++++++++++++++++++OO++++++++++++++++",
"++++++++++++++++OOO++++++++++++++++++++++OOO++++++++++++++++",
"++++++++++++++oOOOO++++++++++++++++++++oOOOO++++++++++++++++",
"+++++++++++++++XOOO+++++++++++++++++++++XOOO++++++++++++++++",
"+++++++++++++++X+OO+++++++++++++++++++++X+OO++++++++++++++++",
"+++++++.+++++++X++OOO++++++++++.++++++++X++OOOO++++++++.++++",
"+++++++++++++++X++O+o+++++++++++++++++++X++O+oO+++++++++++++",
"+++++++++++++++X++++X+++++++++++++++++++X+++++X+++++++++++++",
"+++++++++++++++X++++X+++++++++++++++++++X+++++X+++++++++++++",
"++++++ooooXXXXXX++++XXXXXXXXXXXXXXXXXXXXX+++++XXXXXXXXXXXXXX",
"++++++ooo++++++X++++X+++++++++++++++++++X+++++X+++++++++++++",
"+++++++++++++++X++++X+++++++++++++++++++X+++++X+++++++++++++",
"+++++++++++++++X++++o+++++++++++++++++++X++++oO+++++++++++++",
"+++++++++++++++X++O+O+++++++++++++++++++X++O++O+++++++++++++",
"+++++++++++++++X++OOO+++++++++++++++++++X++OOOO+++++++++++++",
"+++++++++++++++X+OO+++++++++++++++++++++X+OO++++++++++++++++",
"+++++++++++++++X+OO+++++++++++++++++++++X+OO++++++++++++++++",
"+++++++.++++++oOOOO.+++++++++++.+++++++oOOOO+++++++++++.++++",
"+++++++++++++++++OO+++++++++++++++++++++++OO++++++++++++++++",
"+++++++++++++++++OO+++++++++++++++++++++++OO++++++++++++++++",
"++++++++++++++++++OOO++++++++++++++++++++++OOOO+++++++++++++",
"++++++++++++++++++O+o++++++++++++++++++++++O+oO+++++++++++++",
"++++++++++++++++++++O+++++++++++++++++++++++++O+++++++++++++",
"++++++++++++++++++++O+++++++++++++++++++++++++O+++++++++++++",
"++++++++++++++++++++OO+++++++++++++++++++++++OO+++++++++++++",
"++++++++++++++++++++O+++++++++++++++++++++++++O+++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+++++++.+++++++++++.+++++++++++.+++++++++++.+++++++++++.++++"
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+++++++++++++++++++++oooo+++++++++++++++++oooo++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O++++++++++++++++++++O++++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++o+OOOOOOOO+++++++++++o+OOOOOOOO+++++",
"++++++++++++++++++++o+o++++++O+++++++++++o+o++++++O+++++",
"++++++++++++++++++o+ooo++++++O+++++++++o+ooo++++++O+++++",
"++++++++++++++++++o+o++++++++O+++++++++o+o++++++++O+++++",
"+++++++++++++++++oo+o++++++++O++++++++oo+o++++++++O+++++",
"++++++++++++OOOO oo+ooOOOOOOOO+++OOOO oo+ooOOOOOOOO+++++",
"++++++++++++O++ oo+o+ +++++++++O++ oo+o+ +++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++O+++++++ooo++++++++++O+++++++ooo++++++++++++",
"++++++++++++O+++++++o+O +++++++++O+++++++o+O +++++++++++",
"++ +++++++O+++++++++O +++++++++O+++++++++O +++++++ +",
".+ OOOOOOOO+++++++++OOOOOOOOOOOO+++++++++OOOOOOOOOO ",
"X+ +++++++O+++++++++O +++++++++O+++++++++O +++++++ +",
"++++++++++++O+++++++o+O +++++++++O+++++++o+O +++++++++++",
"++++++++++++O+++++++o+o++++++++++O+++++++o+o++++++++++++",
"++++++++++++O+++++o+ooo++++++++++O+++++o+ooo++++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++OOOO oo+ooOOOOOOOO+++OOOO oo+ooOOOOOOOO+++++",
"+++++++++++++++ +o+o+ +++++O++++++ +o+o+ +++++O+++++",
"++++++++++++++++++o+o++++++++O+++++++++o+o++++++++O+++++",
"++++++++++++++++++o+o++++++++O+++++++++o+o++++++++O+++++",
"++++++++++++++++++++ooo++++++O+++++++++++ooo++++++O+++++",
"++++++++++++++++++++o+OOOOOOOO+++++++++++o+OOOOOOOO+++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O++++++++++++++++++++O++++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"+++++++++++++++++++++ooo+++++++++++++++++++oo+++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
};

View File

@ -1,53 +1,55 @@
/* XPM */
static char *icon[] = {
/* width height num_colors chars_per_pixel */
" 60 41 5 1",
/* colors */
". c #000000",
"# c #00a8e8",
"a c #787c78",
"b c #88dc00",
"c c #b00000",
/* columns rows colors chars-per-pixel */
"56 42 6 1 ",
" c #BB2200",
". c #FA0000",
"X c red",
"o c #229900",
"O c #0044EE",
"+ c None",
/* pixels */
"............................................................",
"............................................................",
"............................................................",
"............................................................",
".......a...........a...........a...........a...........a....",
"............................................................",
"...................bbbb.....................bbbb............",
"....................b.........................b.............",
"....................c........................cb.............",
"..................b.b......................b..b.............",
"..................bbb......................bbbb.............",
".................bb.......................bb................",
"................bbb......................bbb................",
"..............cbbbb....................cbbbb................",
"...............#bbb.....................#bbb................",
"...............#.bb.....................#.bb................",
".......a.......#..bbb..........a........#..bbbb........a....",
"...............#..b.c...................#..b.cb.............",
"...............#....#...................#.....#.............",
"...............#....#...................#.....#.............",
"......cccc######....#####################.....##############",
"......ccc......#....#...................#.....#.............",
"...............#....#...................#.....#.............",
"...............#....c...................#....cb.............",
"...............#..b.b...................#..b..b.............",
"...............#..bbb...................#..bbbb.............",
"...............#.bb.....................#.bb................",
"...............#.bb.....................#.bb................",
".......a......cbbbba...........a.......cbbbb...........a....",
".................bb.......................bb................",
".................bb.......................bb................",
"..................bbb......................bbbb.............",
"..................b.c......................b.cb.............",
"....................b.........................b.............",
"....................bb.......................bb.............",
"....................b.........................b.............",
"............................................................",
"............................................................",
"............................................................",
"............................................................",
".......a...........a...........a...........a...........a...."
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"+++++++++++++++++++++oooo+++++++++++++++++oooo++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O++++++++++++++++++++O++++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++o+OOOOOOOO+++++++++++o+OOOOOOOO+++++",
"++++++++++++++++++++o+o++++++O+++++++++++o+o++++++O+++++",
"++++++++++++++++++o+ooo++++++O+++++++++o+ooo++++++O+++++",
"++++++++++++++++++o+o++++++++O+++++++++o+o++++++++O+++++",
"+++++++++++++++++oo+o++++++++O++++++++oo+o++++++++O+++++",
"++++++++++++OOOO oo+ooOOOOOOOO+++OOOO oo+ooOOOOOOOO+++++",
"++++++++++++O++ oo+o+ +++++++++O++ oo+o+ +++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++O+++++++ooo++++++++++O+++++++ooo++++++++++++",
"++++++++++++O+++++++o+O +++++++++O+++++++o+O +++++++++++",
"++ +++++++O+++++++++O +++++++++O+++++++++O +++++++ +",
".+ OOOOOOOO+++++++++OOOOOOOOOOOO+++++++++OOOOOOOOOO ",
"X+ +++++++O+++++++++O +++++++++O+++++++++O +++++++ +",
"++++++++++++O+++++++o+O +++++++++O+++++++o+O +++++++++++",
"++++++++++++O+++++++o+o++++++++++O+++++++o+o++++++++++++",
"++++++++++++O+++++o+ooo++++++++++O+++++o+ooo++++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++O+++++o+o++++++++++++O+++++o+o++++++++++++++",
"++++++++++++OOOO oo+ooOOOOOOOO+++OOOO oo+ooOOOOOOOO+++++",
"+++++++++++++++ +o+o+ +++++O++++++ +o+o+ +++++O+++++",
"++++++++++++++++++o+o++++++++O+++++++++o+o++++++++O+++++",
"++++++++++++++++++o+o++++++++O+++++++++o+o++++++++O+++++",
"++++++++++++++++++++ooo++++++O+++++++++++ooo++++++O+++++",
"++++++++++++++++++++o+OOOOOOOO+++++++++++o+OOOOOOOO+++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O++++++++++++++++++++O++++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++O +++++++++++++++++++O +++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"+++++++++++++++++++++ooo+++++++++++++++++++oo+++++++++++",
"++++++++++++++++++++++o++++++++++++++++++++o++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
};

View File

@ -178,11 +178,12 @@ void windowid()
/* here I create the icon pixmap,to be used when iconified, */
#ifdef __unix__
if(!cad_icon_pixmap) {
i=XpmCreatePixmapFromData(display,framewin, cad_icon,&cad_icon_pixmap, NULL, NULL);
i=XpmCreatePixmapFromData(display,framewin, cad_icon,&cad_icon_pixmap, &cad_icon_mask, NULL);
dbg(1, "Tcl_AppInit(): creating icon pixmap returned: %d\n",i);
hints_ptr = XAllocWMHints();
hints_ptr->icon_pixmap = cad_icon_pixmap ;
hints_ptr->flags = IconPixmapHint ;
hints_ptr->icon_mask = cad_icon_mask ;
hints_ptr->flags = IconPixmapHint | IconMaskHint;
XSetWMHints(display, parent_of_topwindow, hints_ptr);
XFree(hints_ptr);
}
@ -643,7 +644,10 @@ void xwin_exit(void)
dbg(1, "xwin_exit(): destroying tk windows and releasing X11 stuff\n");
Tk_DestroyWindow(mainwindow);
#ifdef __unix__
if(cad_icon_pixmap) XFreePixmap(display, cad_icon_pixmap);
if(cad_icon_pixmap) {
XFreePixmap(display, cad_icon_pixmap);
XFreePixmap(display, cad_icon_mask);
}
#else
if (cad_icon_pixmap) Tk_FreePixmap(display, cad_icon_pixmap);
#endif

View File

@ -726,7 +726,7 @@ extern GC *gc, *gcstipple, gctiled;
extern Display *display;
extern XRectangle *rectangle;
extern XPoint *gridpoint;
extern Pixmap cad_icon_pixmap, *pixmap,save_pixmap;
extern Pixmap cad_icon_pixmap, cad_icon_mask, *pixmap,save_pixmap;
extern XColor xcolor_array[];
extern Visual *visual;
#ifdef HAS_CAIRO