Ejemplo n.º 1
0
void draw_test (int id, ps_context* gc)
{
    ps_color col = {0, 0, 1, 1};
    ps_color sol = {1, 0, 0, 1};
    ps_rect cr = {2.7f , 3.4f, 272.4f, 261.3f};
    ps_point s = {50.1f, 50.3f};
    ps_point e = {200.7f, 50.3f};

    ps_point p[3] = {{100,100},{200, 300},{ 300, 40}};
    ps_point cp = {128, 128};
    ps_point sc = {10, 228};
    ps_rect br = {50, 50, 120, 100};

    ps_set_line_width(gc, 1);
    ps_set_stroke_color(gc, &sol);

//    ps_set_line_dash(gc, dashs[0].s, dashs[0].d, 4);
    ps_set_source_color(gc, &col);
    ps_arc (gc, &cp, 10 , 0, 6.28f, True);
    ps_stroke(gc);

//    ps_set_line_dash(gc, dashs[1].s, dashs[1].d, 4);
    ps_tangent_arc(gc, &br, 0, 1.254f);
    ps_stroke(gc);
    ps_move_to(gc, &sc);
    ps_bezier_curve_to(gc, &p[0], &p[1], &p[2]);

    ps_arc (gc, &cp, 100 , 0.785f, 3.140f, False);
    
    ps_bezier_curve_to(gc, &p[0], &p[1], &p[2]);
    
//    ps_set_line_dash(gc, dashs[2].s, dashs[2].d, 4);
    ps_quad_curve_to(gc, &p[1], &p[2]);
    ps_stroke(gc);

//    ps_set_line_dash(gc, dashs[3].s, dashs[3].d, 4);
    ps_rectangle(gc, &cr);
    ps_rounded_rect(gc, &gt, 45.2f, 35.2f, 25.2f, 25.2f, 35.2f, 55.2f, 65.2f, 85.2f);
    ps_ellipse(gc, &gr);
    ps_stroke(gc);

//    ps_reset_line_dash(gc);
    ps_move_to(gc, &s);
    ps_line_to(gc, &e);
    ps_stroke(gc);
}
Ejemplo n.º 2
0
void draw_test (int id, ps_context* gc)
{
//    int i;
//    double w;
    ps_font* old;
//    ps_size ts;
//    ps_font_info info;
//    ps_glyph g[5];
    ps_glyph tg;
//    ps_point s1;
//    ps_point e1;
    ps_color c1= {1, 0, 0, 0.8f};
    ps_color c2= {0, 0, 1, 0.8f};
    //ps_color x = {0, 0, 0, 1};
    ps_rect r = {150, 150, 400, 250};
    /*
    ps_rect er = {150, 50, 100, 100};
    ps_reset_clip(gc);
    ps_ellipse(gc, &er);
    ps_clip(gc);
    */
        ps_point s = {100, 100};
        ps_point e = {250, 100};

//    ps_set_shadow(gc, 1, 1, 0.15f);
//    ps_set_shadow_color(gc, &x);
    ps_translate(gc, -200, -200);
    ps_rotate(gc, 0.02f);
    ps_translate(gc, 200, 200);

  //  ps_set_text_antialias(gc, False);
        
//        double ds[] = {5, 3.1, 1.2, 5.5};

//        ps_set_line_dash(gc, 0, ds, 4);
        ps_move_to(gc, &s);
        ps_line_to(gc, &e);
    ps_stroke(gc);

  //  ps_set_text_render_type(gc, TEXT_TYPE_MONO);
    ps_set_text_matrix(gc, pn);
    ps_text_out_length(gc, 100, 100, text, strlen(text));


/*    
    if (a) {
    //    ps_font_set_size(pf, 16);
        ps_set_text_color(gc, &c1);
        a = 0;
    } else {
    //    ps_font_set_size(pf, 26);
        ps_set_text_color(gc, &c2);
        a = 1;
    }
*/
    //ps_matrix_rotate(pm, 0.13);
    ps_set_text_matrix(gc, pm);
    //ps_font_set_weight(pf, w);
    ps_set_text_color(gc, &c1);
    ps_set_text_stroke_color(gc, &c2);

    ps_rectangle(gc, &r);
    ps_stroke(gc);
//    ps_wide_text_out_length(gc, 200, 100, wtext, 5);
    old = ps_set_font(gc, pf);

    //ts = ps_text_extent(gc, wtext, 5);
//fprintf(stderr, "w: %.2f - h: %.2f \n", ts.w, ts.h);
///    s1.x = s1.y =  150;
//    e1.y = 150;
//    e1.x = 150 + ts.w;
//    ps_move_to(gc, &s1);
//    ps_line_to(gc, &e1);
//    ps_stroke(gc);


    ps_draw_text(gc, &r, wtext, 5, DRAW_TEXT_STROKE, TEXT_ALIGN_LEFT | TEXT_ALIGN_TOP);

    //ps_set_source_gradient(gc, gr);
    //ps_set_source_image(gc, pi);
    ps_set_source_pattern(gc, pt);
    ps_get_glyph(gc, 0x56fe, &tg);

//    ts = ps_glyph_extent(&tg);
//fprintf(stderr, "w: %.2f - h: %.2f \n", ts.w, ts.h);
    ps_get_path_from_glyph(gc, &tg, pa);
    ps_set_path(gc, pa);
    ps_fill(gc);

//    ps_get_font_info(gc, &info);
//fprintf(stderr, "h: %.2f - a: %.2f - d: %.2f - l: %.2f \n", info.size, info.ascent, info.descent, info.leading);
    ps_set_font(gc, old);
    ps_set_text_render_type(gc, TEXT_TYPE_STROKE);

/*
    for (i=0; i<5; i++)
        ps_get_glyph(gc, gtext[i], &g[i]);

    ps_show_glyphs(gc, 200, 200, g, 5);
*/
}
Ejemplo n.º 3
0
int
to_eps (const GEN_PAR *pg, const OUT_PAR *po)
{
    PlotCmd	cmd;
    HPGL_Pt	pt1 = {0,0};
    FILE		*md;
    int		pen_no=0, pencolor=0, err;
    PEN_W		pensize;

    err = 0;
    if (!pg->quiet)
        Eprintf ("\n\n- Writing EPS code to \"%s\"\n",
                 *po->outfile == '-' ? "stdout" : po->outfile);

    /* Init. of PostScript file: */
    if (*po->outfile != '-')
    {
        if ((md = fopen(po->outfile, "w")) == NULL)
        {
            PError("hp2xx (eps)");
            return ERROR;
        }
    }
    else
        md = stdout;

    /* PS header */

    pensize = pt.width[DEFAULT_PEN_NO]; /* Default pen	*/
    ps_init (pg, po, md, pensize);

    if (pensize > 0.05)
        fprintf(md," %6.3f W\n", pensize);

    /* Factor for transformation of HP coordinates to mm	*/

    xcoord2mm = po->width  / (po->xmax - po->xmin);
    ycoord2mm = po->height / (po->ymax - po->ymin);
    xmin	    = po->xmin;
    ymin	    = po->ymin;

    /**
     ** Command loop: While temporary file not empty: process command.
     **/

    while ((cmd = PlotCmd_from_tmpfile()) != CMD_EOF)
    {
        switch (cmd)
        {
        case NOP:
            break;
        case SET_PEN:
            if ((pen_no = fgetc(pg->td)) == EOF)
            {
                PError("Unexpected end of temp. file: ");
                err = ERROR;
                goto EPS_exit;
            }
            pensize = pt.width[pen_no];
            pencolor = pt.color[pen_no];
            break;
        case DEF_PW:
            if(!load_pen_width_table(pg->td)) {
                PError("Unexpected end of temp. file");
                err = ERROR;
                goto EPS_exit;
            }
            pensize=pt.width[pen_no];
            break;
        case DEF_PC:
            err=load_pen_color_table(pg->td);
            if (err<0) {
                PError("Unexpected end of temp. file");
                err = ERROR;
                goto EPS_exit;
            }
            if (err==pencolor) pencolor *=-1; /*current pen changed*/
            break;
        case DEF_LA:
            if(load_line_attr(pg->td) <0) {
                PError("Unexpected end of temp. file");
                err = ERROR;
                goto EPS_exit;
            }
            break;
        case MOVE_TO:
            ps_set_linewidth(pensize, &pt1, md);
            ps_set_linecap(CurrentLineAttr.End, pensize, &pt1, md);

            if(pencolor <0) {
                pencolor=pt.color[pen_no];
                ps_set_color (  pt.clut[pencolor][0]/255.0,
                                pt.clut[pencolor][1]/255.0,
                                pt.clut[pencolor][2]/255.0,
                                &pt1, md);
            }

            HPGL_Pt_from_tmpfile (&pt1);
            if (pensize > 0.05)
                ps_stroke_and_move_to (&pt1, md);
            break;
        case DRAW_TO:
            ps_set_linewidth(pensize, &pt1, md);
            ps_set_linecap(CurrentLineAttr.End, pensize, &pt1, md);

            if(pencolor <0) {
                pencolor=pt.color[pen_no];
                ps_set_color (  pt.clut[pencolor][0]/255.0,
                                pt.clut[pencolor][1]/255.0,
                                pt.clut[pencolor][2]/255.0,
                                &pt1, md);
            }

            HPGL_Pt_from_tmpfile (&pt1);
            if (pensize > 0.05)
                ps_line_to (&pt1, 'D', md);
            break;
        case PLOT_AT:
            ps_set_linewidth(pensize, &pt1, md);
            ps_set_linecap(CurrentLineAttr.End, pensize, &pt1, md);

            if(pencolor<0) {
                pencolor=pt.color[pen_no];
                ps_set_color (  pt.clut[pencolor][0]/255.0,
                                pt.clut[pencolor][1]/255.0,
                                pt.clut[pencolor][2]/255.0,
                                &pt1, md);
            }

            HPGL_Pt_from_tmpfile (&pt1);
            if (pensize > 0.05) {
                ps_line_to (&pt1, 'M', md);
                ps_line_to (&pt1, 'D', md); /* not sure whether this is needed */
                ps_draw_dot(&pt1,pensize/2,md);
            }
            break;
        default:
            Eprintf ("Illegal cmd in temp. file!");
            err = ERROR;
            goto EPS_exit;
        }
    }

    /* Finish up */

    ps_end (md);

EPS_exit:
    if (md != stdout)
        fclose (md);

    if (!pg->quiet)
        Eprintf ("\n");
    return err;
}