当前位置: 首页>>代码示例>>C++>>正文


C++ DRAW类代码示例

本文整理汇总了C++中DRAW的典型用法代码示例。如果您正苦于以下问题:C++ DRAW类的具体用法?C++ DRAW怎么用?C++ DRAW使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了DRAW类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: ImagingDrawPoint

int
ImagingDrawPoint(Imaging im, int x0, int y0, const void* ink_, int op)
{
    DRAW* draw;
    INT32 ink;

    DRAWINIT();

    draw->point(im, x0, y0, ink);

    return 0;
}
开发者ID:AurelienBallier,项目名称:Pillow,代码行数:12,代码来源:Draw.c

示例2: ImagingDrawLine

int
ImagingDrawLine(Imaging im, int x0, int y0, int x1, int y1, const void* ink_,
                int op)
{
    DRAW* draw;
    INT32 ink;

    DRAWINIT();

    draw->line(im, x0, y0, x1, y1, ink);

    return 0;
}
开发者ID:AurelienBallier,项目名称:Pillow,代码行数:13,代码来源:Draw.c

示例3: ImagingDrawOutline

int
ImagingDrawOutline(Imaging im, ImagingOutline outline, const void* ink_,
                   int fill, int op)
{
    DRAW* draw;
    INT32 ink;

    DRAWINIT();

    draw->polygon(im, outline->count, outline->edges, ink, 0);

    return 0;
}
开发者ID:AurelienBallier,项目名称:Pillow,代码行数:13,代码来源:Draw.c

示例4: ImagingDrawWideLine

int
ImagingDrawWideLine(Imaging im, int x0, int y0, int x1, int y1,
                    const void* ink_, int width, int op)
{
    DRAW* draw;
    INT32 ink;
    int dx, dy;
    double big_hypotenuse, small_hypotenuse, ratio_max, ratio_min;
    int dxmin, dxmax, dymin, dymax;
    Edge e[4];

    DRAWINIT();

    if (width <= 1) {
        draw->line(im, x0, y0, x1, y1, ink);
        return 0;
    }

    dx = x1-x0;
    dy = y1-y0;
    if (dx == 0 && dy == 0) {
        draw->point(im, x0, y0, ink);
        return 0;
    }

    big_hypotenuse = sqrt((double) (dx*dx + dy*dy));
    small_hypotenuse = (width - 1) / 2.0;
    ratio_max = ROUND_UP(small_hypotenuse) / big_hypotenuse;
    ratio_min = ROUND_DOWN(small_hypotenuse) / big_hypotenuse;

    dxmin = ROUND_DOWN(ratio_min * dy);
    dxmax = ROUND_DOWN(ratio_max * dy);
    dymin = ROUND_DOWN(ratio_min * dx);
    dymax = ROUND_DOWN(ratio_max * dx);
    {
        int vertices[4][2] = {
            {x0 - dxmin, y0 + dymax},
            {x1 - dxmin, y1 + dymax},
            {x1 + dxmax, y1 - dymin},
            {x0 + dxmax, y0 - dymin}
        };

        add_edge(e+0, vertices[0][0], vertices[0][1], vertices[1][0], vertices[1][1]);
        add_edge(e+1, vertices[1][0], vertices[1][1], vertices[2][0], vertices[2][1]);
        add_edge(e+2, vertices[2][0], vertices[2][1], vertices[3][0], vertices[3][1]);
        add_edge(e+3, vertices[3][0], vertices[3][1], vertices[0][0], vertices[0][1]);

        draw->polygon(im, 4, e, ink, 0);
    }
    return 0;
}
开发者ID:AurelienBallier,项目名称:Pillow,代码行数:51,代码来源:Draw.c

示例5: ImagingDrawRectangle

int
ImagingDrawRectangle(Imaging im, int x0, int y0, int x1, int y1,
                     const void* ink_, int fill, int width, int op)
{
    int i;
    int y;
    int tmp;
    DRAW* draw;
    INT32 ink;

    DRAWINIT();

    if (y0 > y1)
        tmp = y0, y0 = y1, y1 = tmp;

    if (fill) {

        if (y0 < 0)
            y0 = 0;
        else if (y0 >= im->ysize)
            return 0;

        if (y1 < 0)
            return 0;
        else if (y1 > im->ysize)
            y1 = im->ysize;

        for (y = y0; y <= y1; y++)
            draw->hline(im, x0, y, x1, ink);

    } else {
        /* outline */
        if (width == 0) {
            width = 1;
        }
        for (i = 0; i < width; i++) {
            draw->hline(im, x0, y0+i, x1, ink);
            draw->hline(im, x0, y1-i, x1, ink);
            draw->line(im, x1-i, y0, x1-i, y1, ink);
            draw->line(im, x0+i, y1, x0+i, y0, ink);
        }
    }

    return 0;
}
开发者ID:anntzer,项目名称:Pillow,代码行数:45,代码来源:Draw.c

示例6: ImagingDrawPolygon

int
ImagingDrawPolygon(Imaging im, int count, int* xy, const void* ink_,
                   int fill, int op)
{
    int i, n;
    DRAW* draw;
    INT32 ink;

    if (count <= 0)
        return 0;

    DRAWINIT();

    if (fill) {

        /* Build edge list */
        /* malloc check ok, using calloc */
        Edge* e = calloc(count, sizeof(Edge));
        if (!e) {
            (void) ImagingError_MemoryError();
            return -1;
        }
        for (i = n = 0; i < count-1; i++)
            add_edge(&e[n++], xy[i+i], xy[i+i+1], xy[i+i+2], xy[i+i+3]);
        if (xy[i+i] != xy[0] || xy[i+i+1] != xy[1])
            add_edge(&e[n++], xy[i+i], xy[i+i+1], xy[0], xy[1]);
        draw->polygon(im, n, e, ink, 0);
        free(e);

    } else {

        /* Outline */
        for (i = 0; i < count-1; i++)
            draw->line(im, xy[i+i], xy[i+i+1], xy[i+i+2], xy[i+i+3], ink);
        draw->line(im, xy[i+i], xy[i+i+1], xy[0], xy[1], ink);

    }

    return 0;
}
开发者ID:anntzer,项目名称:Pillow,代码行数:40,代码来源:Draw.c

示例7: ellipse

static int
ellipse(Imaging im, int x0, int y0, int x1, int y1,
        int start, int end, const void* ink_, int fill,
        int mode, int op)
{
    int i, n;
    int cx, cy;
    int w, h;
    int x = 0, y = 0;
    int lx = 0, ly = 0;
    int sx = 0, sy = 0;
    DRAW* draw;
    INT32 ink;

    w = x1 - x0;
    h = y1 - y0;
    if (w < 0 || h < 0)
        return 0;

    DRAWINIT();

    cx = (x0 + x1) / 2;
    cy = (y0 + y1) / 2;

    while (end < start)
        end += 360;

    if (mode != ARC && fill) {

        /* Build edge list */
        Edge* e = malloc((end - start + 3) * sizeof(Edge));
        if (!e) {
            ImagingError_MemoryError();
            return -1;
        }

        n = 0;

        for (i = start; i <= end; i++) {
            x = FLOOR((cos(i*M_PI/180) * w/2) + cx + 0.5);
            y = FLOOR((sin(i*M_PI/180) * h/2) + cy + 0.5);
            if (i != start)
                add_edge(&e[n++], lx, ly, x, y);
            else
                sx = x, sy = y;
            lx = x, ly = y;
        }

        if (n > 0) {
            /* close and draw polygon */
            if (mode == PIESLICE) {
                if (x != cx || y != cy) {
                    add_edge(&e[n++], x, y, cx, cy);
                    add_edge(&e[n++], cx, cy, sx, sy);
                }
            } else {
                if (x != sx || y != sy)
                    add_edge(&e[n++], x, y, sx, sy);
            }
            draw->polygon(im, n, e, ink, 0);
        }

        free(e);

    } else {

        for (i = start; i <= end; i++) {
            x = FLOOR((cos(i*M_PI/180) * w/2) + cx + 0.5);
            y = FLOOR((sin(i*M_PI/180) * h/2) + cy + 0.5);
            if (i != start)
                draw->line(im, lx, ly, x, y, ink);
            else
                sx = x, sy = y;
            lx = x, ly = y;
        }

        if (i != start) {
            if (mode == PIESLICE) {
                if (x != cx || y != cy) {
                    draw->line(im, x, y, cx, cy, ink);
                    draw->line(im, cx, cy, sx, sy, ink);
                }
            } else if (mode == CHORD) {
                if (x != sx || y != sy)
                    draw->line(im, x, y, sx, sy, ink);
            }
        }
    }

    return 0;
}
开发者ID:AurelienBallier,项目名称:Pillow,代码行数:91,代码来源:Draw.c

示例8: ellipse

static int
ellipse(Imaging im, int x0, int y0, int x1, int y1,
        float start, float end, const void* ink_, int fill,
        int width, int mode, int op)
{
    float i;
    int j;
    int n;
    int cx, cy;
    int w, h;
    int x = 0, y = 0;
    int lx = 0, ly = 0;
    int sx = 0, sy = 0;
    DRAW* draw;
    INT32 ink;

    DRAWINIT();

    if (width == 0) {
        width = 1;
    }

    for (j = 0; j < width; j++) {

        w = x1 - x0;
        h = y1 - y0;
        if (w < 0 || h < 0)
            return 0;

        cx = (x0 + x1) / 2;
        cy = (y0 + y1) / 2;

        while (end < start)
            end += 360;

        if (end - start > 360) {
            /* no need to go in loops */
            end = start + 361;
        }

        if (mode != ARC && fill) {

            /* Build edge list */
            /* malloc check UNDONE, FLOAT? */
            Edge* e = calloc((end - start + 3), sizeof(Edge));
            if (!e) {
                ImagingError_MemoryError();
                return -1;
            }
            n = 0;

            for (i = start; i < end+1; i++) {
                if (i > end) {
                    i = end;
                }
                ellipsePoint(cx, cy, w, h, i, &x, &y);
                if (i != start)
                    add_edge(&e[n++], lx, ly, x, y);
                else
                    sx = x, sy = y;
                lx = x, ly = y;
            }

            if (n > 0) {
                /* close and draw polygon */
                if (mode == PIESLICE) {
                    if (x != cx || y != cy) {
                        add_edge(&e[n++], x, y, cx, cy);
                        add_edge(&e[n++], cx, cy, sx, sy);
                    }
                } else {
                    if (x != sx || y != sy)
                        add_edge(&e[n++], x, y, sx, sy);
                }
                draw->polygon(im, n, e, ink, 0);
            }

            free(e);

        } else {

            for (i = start; i < end+1; i++) {
                if (i > end) {
                    i = end;
                }
                ellipsePoint(cx, cy, w, h, i, &x, &y);
                if (i != start)
                    draw->line(im, lx, ly, x, y, ink);
                else
                    sx = x, sy = y;
                lx = x, ly = y;
            }

            if (i != start) {
                if (mode == PIESLICE) {
                    if (j == 0 && (x != cx || y != cy)) {
                        if (width == 1) {
                            draw->line(im, x, y, cx, cy, ink);
                            draw->line(im, cx, cy, sx, sy, ink);
                        } else {
//.........这里部分代码省略.........
开发者ID:anntzer,项目名称:Pillow,代码行数:101,代码来源:Draw.c

示例9: PAGELEN

execute () {
	register struct file *file = &cur->d.cat[cur->d.curfile];
	register char *name = file->name;
	int updir, dev, ino;

	switch (file->mode & S_IFMT) {
	case S_IFDIR:
		if (! strcmp (name, ".")) {
//			setdir (cur, NULL);
			break;
		}
		if (updir = !strcmp (name, "..")) {
			dev = cur->d.dev;
			ino = cur->d.ino;
		}
		if (cur->chdir(name) < 0)
			break;
		setdir (cur, ".");
		if (updir) {
			for (cur->d.curfile=0; cur->d.curfile<cur->d.num; ++cur->d.curfile) {
				if (cur->d.cat[cur->d.curfile].dev == dev &&
				    cur->d.cat[cur->d.curfile].ino == ino)
					break;
			}
			if (cur->d.curfile >= cur->d.num)
				cur->d.curfile = 0;
			if (cur->d.topfile + PAGELEN (cur) <= cur->d.curfile)
				cur->d.topfile = cur->d.curfile - PAGELEN (cur) + 1;
		}
		if (visualwin) {
			draw.drawdir(left, 0, left, right);
			draw.drawdir(right, 0, left, right);
		}
		break;
//	case S_IFREG:
//		if (file->execable)
//			strcpy (command, file->name);
//		else
//			excommand (command, file->name);
//		cpos = strlen (command);
//		if (! command [0])
//			break;
//		cmd.exec(cur, &left, &right, file->execable ? 1 : 0, 1);
//		draw.draw(cur, &left, &right);
//		break;
	}
}
开发者ID:kotohvost,项目名称:arvid,代码行数:47,代码来源:main.cpp

示例10: cntrl

main (int argc, char **argv, char **envp) {
	register c;

	if (argc > 2) {
		outerr("Usage: deco [dirname]\n",0);
		exit (1);
	}
	outerr("Demos Commander, Copyright (C) 1989-1994 Serge Vakulenko\n",0);
	palette = dflt_palette;
	EnvInit (envp);
	uid = getuid ();
	gid = getgid ();
# ifdef GROUPS
	gidnum = getgroups (sizeof(gidlist)/sizeof(gidlist[0]), (unsigned int *)gidlist);
# endif
	ppid = getppid ();
	user = username (uid);
	group = groupname (gid);
	tty = ttyname (0);
	machine = getmachine ();
#if 0
	sigign();
#else
	signal(SIGTERM, SIG_IGN);
	signal(SIGQUIT, SIG_IGN);
	signal(SIGINT, SIG_IGN);
# ifdef SIGTSTP
	signal(SIGTSTP, SIG_IGN);
# endif
#endif
	init ();
//	inithome ();
	VClear ();
/* init class dir */
	if (argc > 1)
//		chdir (argv [1]);
		left = new dir(argv [1]);
	else
		left = new dir;
	right = new dir;
	left->d.basecol = 0;
	right->d.basecol = 40;
/*-----------*/
	initfile.read();
	if (uid == 0)
		palette.dimfg = 6;
	v.VSetPalette (palette.fg, palette.bg, palette.revfg, palette.revbg,
		palette.boldfg, palette.boldbg, palette.boldrevfg, palette.boldrevbg,
		palette.dimfg, palette.dimbg, palette.dimrevfg, palette.dimrevbg);
	setdir (left, ".");
	setdir (right, ".");
	left->chdir(left->d.cwd);
	cur = left;
	draw.draw(cur, left, right);
	for (;;) {
		if (! cmdreg)
			draw.drawcursor(cur);
//		cmd.drawcmd(cur, &left, &right);
		VSync ();
		c = KeyGet ();
		if (! cmdreg)
			draw.undrawcursor(cur);
		switch (c) {
		case '+':               /* select */
		case '-':               /* unselect */
			if (! cpos && ! cmdreg && ! cur->d.status) {
				if (c == '+')
					tagall ();
				else
					untagall ();
				draw.draw(cur, left, right);
				continue;
			}
		default:
//			if (c>=' ' && c<='~' || c>=0300 && c<=0376) {
//				if (cpos || c!=' ')
//					cmd.inscmd(c);
//				continue;
//			}
			VBeep ();
			continue;
//		case cntrl ('V'):       /* quote next char */
//			cmd.inscmd(quote ());
//			continue;
//		case cntrl ('J'):       /* insert file name */
//			if (! cmdreg && ! cur->status)
//				cmd.namecmd(cur);
//			continue;
//		case cntrl ('G'):
//			cmd.delcmd();
//			continue;
//		case meta ('b'):        /* backspace */
//			if (cpos) {
//				cmd.leftcmd();
//				cmd.delcmd();
//			}
//			continue;
		case cntrl ('O'):       /* set/unset command mode */
		case cntrl ('P'):       /* set/unset command mode */
			switchcmdreg ();
//.........这里部分代码省略.........
开发者ID:kotohvost,项目名称:arvid,代码行数:101,代码来源:main.cpp

示例11: doscrreg

void doscrreg (int c) {
	switch (c) {
	case meta ('h'):          /* home */
		cur->d.curfile = cur->d.topfile = 0;
		break;
	case meta ('e'):          /* end */
		cur->d.curfile = cur->d.num - 1;
		cur->d.topfile = cur->d.num - PAGELEN (cur);
		if (cur->d.topfile < 0)
			cur->d.topfile = 0;
		break;
	case meta ('u'):          /* up */
		if (cur->d.curfile <= 0)
			return;
		if (cur->d.curfile > cur->d.topfile) {
			--cur->d.curfile;
			return;
		}
		cur->d.topfile = --cur->d.curfile;
		break;
	case meta ('d'):          /* down */
		if (cur->d.curfile >= cur->d.num-1)
			return;
		if (cur->d.topfile + PAGELEN (cur) - 1 > cur->d.curfile) {
			++cur->d.curfile;
			return;
		}
		cur->d.topfile = ++cur->d.curfile - PAGELEN (cur) + 1;
		break;
	case meta ('l'):          /* left */
		if (cur->d.curfile < H) {
			if (cur->d.topfile <= 0)
				return;
			cur->d.curfile -= cur->d.topfile;
			cur->d.topfile = 0;
			break;
		}
		cur->d.curfile -= H;
		if (cur->d.topfile <= cur->d.curfile)
			return;
		cur->d.topfile -= H;
		if (cur->d.topfile <= 0) {
			cur->d.curfile -= cur->d.topfile;
			cur->d.topfile = 0;
		}
		break;
	case meta ('r'):          /* right */
		if (cur->d.curfile + H < cur->d.num) {
			cur->d.curfile += H;
			if (cur->d.topfile + PAGELEN (cur) > cur->d.curfile)
				return;
			cur->d.topfile += H;
			break;
		}
		if (cur->d.topfile + PAGELEN (cur) < cur->d.num) {
			cur->d.curfile = cur->d.num-1;
			cur->d.topfile += H;
			break;
		}
		if ((cur->d.curfile - cur->d.topfile) / H <
		    (cur->d.num - cur->d.topfile - 1) / H)
			cur->d.curfile = cur->d.num-1;
		return;
	case meta ('n'):          /* next page */
		if (cur->d.topfile + PAGELEN (cur) >= cur->d.num) {
			cur->d.curfile = cur->d.num-1;
		} else if (cur->d.topfile + 2 * PAGELEN (cur) >= cur->d.num) {
			cur->d.curfile = cur->d.num-1;
			cur->d.topfile = cur->d.num - PAGELEN (cur);
		} else {
			cur->d.curfile += PAGELEN (cur);
			cur->d.topfile += PAGELEN (cur);
		}
		break;
	case meta ('p'):          /* prev page */
		if (cur->d.topfile == 0) {
			cur->d.curfile = 0;
		} else {
			cur->d.curfile -= PAGELEN (cur);
			if (cur->d.topfile > cur->d.curfile)
				cur->d.topfile -= PAGELEN (cur);
			if (cur->d.topfile < 0) {
				cur->d.curfile -= cur->d.topfile;
				cur->d.topfile = 0;
			}
		}
		break;
	case cntrl ('K'):         /* find file */
		findname ();
		break;
	case cntrl ('R'):         /* reread catalog */
		reread (cur);
		break;
	case cntrl ('T'):         /* tag file */
		if ((cur->d.cat[cur->d.curfile].mode & S_IFMT) == (unsigned) S_IFREG) {
			cur->d.cat[cur->d.curfile].tag ^= 1;
			counttag (cur);
		}
		if (cur->d.curfile < cur->d.num-1) {
			/* move down */
//.........这里部分代码省略.........
开发者ID:kotohvost,项目名称:arvid,代码行数:101,代码来源:main.cpp


注:本文中的DRAW类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。