p1 = c->pins[SCF_EDA_NAND_IN1];
p2 = c->pins[SCF_EDA_NAND_OUT];
+ if (p0->y > p1->y)
+ SCF_XCHG(p0, p1);
+
if (0 == n) {
- p0->x = c->x + 36;
- p1->x = c->x + 36;
- p2->x = c->x - 36;
+ if (c->y < p1->y) {
+ p0->x = c->x + d * 7 / 8;
+ p1->x = c->x + d / 8;
+ } else {
+ p0->x = c->x + d / 8;
+ p1->x = c->x + d * 7 / 8;
+ }
+
+ p2->x = c->x - d * 7 / 8;
} else {
- p0->x = c->x - 36;
- p1->x = c->x - 36;
- p2->x = c->x + 36;
+ if (c->y < p1->y) {
+ p0->x = c->x - d * 7 / 8;
+ p1->x = c->x - d / 8;
+ } else {
+ p0->x = c->x - d / 8;
+ p1->x = c->x - d * 7 / 8;
+ }
+
+ p2->x = c->x + d * 7 / 8;
}
break;
p1 = c->pins[SCF_EDA_NOT_OUT];
if (c->x < p1->x) {
- p0->x = c->x - 36;
- p1->x = c->x + 36;
+ p0->x = c->x - d * 7 / 8;
+ p1->x = c->x + d * 7 / 8;
} else {
- p0->x = c->x + 36;
- p1->x = c->x - 36;
+ p0->x = c->x + d * 7 / 8;
+ p1->x = c->x - d * 7 / 8;
}
break;
default:
{
ScfEcomponent* c;
ScfEcomponent* c2;
+ ScfEline* el;
ScfEpin* p;
ScfEpin* p2;
- size_t i;
- size_t j;
- size_t k;
+ long i;
+ long j;
+ long k;
qsort(f->components, f->n_components, sizeof(ScfEcomponent*), ecomponent_cmp_cx);
for (i = 1; i < f->n_components; i++) {
int tmp = c->x;
if (SCF_EDA_NPN == c->type
- || SCF_EDA_PNP == c->type
- || SCF_EDA_NPN == c2->type
- || SCF_EDA_PNP == c2->type)
+ || SCF_EDA_NPN == c2->type
+ || SCF_EDA_PNP == c->type || SCF_EDA_PNP == c2->type
+ || SCF_EDA_NAND == c->type || SCF_EDA_NAND == c2->type
+ || SCF_EDA_NOR == c->type || SCF_EDA_NOR == c2->type
+ || SCF_EDA_NOT == c->type || SCF_EDA_NOT == c2->type)
c->x = c2->x + d * 2;
else
c->x = c2->x + d;
p->x += c->x - tmp;
}
}
+
+ for (i = 0; i < f->n_components; i++) {
+ c = f->components[i];
+
+ for (j = 0; j < f->n_elines; j++) {
+ el = f->elines[j];
+
+ if (c->y - d / 4 < el->lines[0]->y0 && el->lines[0]->y0 < c->y + d / 4)
+ c->y -= d / 3;
+ }
+ }
+
qsort(f->components, f->n_components, sizeof(ScfEcomponent*), ecomponent_cmp_id);
}
continue;
if (SCF_EDA_NPN == c->type
- || SCF_EDA_PNP == c->type
- || SCF_EDA_NPN == mt
- || SCF_EDA_PNP == mt)
+ || SCF_EDA_NPN == mt
+ || SCF_EDA_PNP == c->type || SCF_EDA_PNP == mt
+ || SCF_EDA_NAND == c->type || SCF_EDA_NAND == mt
+ || SCF_EDA_NOR == c->type || SCF_EDA_NOR == mt
+ || SCF_EDA_NOT == c->type || SCF_EDA_NOT == mt)
c->x = max + d * 2;
else
c->x = max + d;
break;
if (SCF_EDA_NPN == c->type
- || SCF_EDA_PNP == c->type
- || SCF_EDA_NPN == c2->type
- || SCF_EDA_PNP == c2->type)
+ || SCF_EDA_NPN == c2->type
+ || SCF_EDA_PNP == c->type || SCF_EDA_PNP == c2->type
+ || SCF_EDA_NAND == c->type || SCF_EDA_NAND == c2->type
+ || SCF_EDA_NOR == c->type || SCF_EDA_NOR == c2->type
+ || SCF_EDA_NOT == c->type || SCF_EDA_NOT == c2->type)
c->x = c2->x + d * 2;
else
c->x = c2->x + d;
f->w = tx1 + d * 2;
f->h += d;
- scf_loge("f->x: %d, y: %d, w: %d, h: %d, tx0: %d, tx1: %d\n", f->x, f->y, f->w, f->h, tx0, tx1);
-
+ scf_logi("f->x: %d, y: %d, w: %d, h: %d, tx0: %d, tx1: %d\n", f->x, f->y, f->w, f->h, tx0, tx1);
return 0;
}
size_t j;
size_t k;
+ cairo_set_source_rgb(cr, 0, 0, 0);
+
for (i = 0; i < b->n_functions; i++) {
f = b->functions[i];
el = f->elines[j];
if (SCF_EDA_PIN_POS & el->flags)
- cairo_set_source_rgb(cr, 1, 0, 0);
+ SHOW_COLOR(cr, 1, 0, 0);
else if (SCF_EDA_PIN_NEG & el->flags)
- cairo_set_source_rgb(cr, 0, 0, 1);
+ SHOW_COLOR(cr, 0, 0, 1);
else if (SCF_EDA_PIN_IN0 & el->flags)
- cairo_set_source_rgb(cr, 0.8, 0, 0);
+ SHOW_COLOR(cr, 0.8, 0, 0);
else if (SCF_EDA_PIN_IN & el->flags)
- cairo_set_source_rgb(cr, 0, 0, 0.8);
+ SHOW_COLOR(cr, 0, 0, 0.8);
else if (SCF_EDA_PIN_CONST & el->flags)
- cairo_set_source_rgb(cr, 0, 0.6, 0);
+ SHOW_COLOR(cr, 0, 0.6, 0);
else if (SCF_EDA_PIN_OUT & el->flags)
- cairo_set_source_rgb(cr, 1, 0, 1);
+ SHOW_COLOR(cr, 1, 0, 1);
else if (SCF_EDA_PIN_CF & el->flags)
- cairo_set_source_rgb(cr, 0.8, 0, 0.8);
+ SHOW_COLOR(cr, 0.8, 0, 0.8);
else
- cairo_set_source_rgb(cr, 1, 0.5, 0.1);
+ SHOW_COLOR(cr, 1, 0.5, 0.1);
uint8_t text[64];
continue;
if (!prev) {
- snprintf(text, sizeof(text) - 1, "%ld", el->id);
+ int n = snprintf(text, sizeof(text) - 1, "%ld", el->id);
- cairo_move_to (cr, l->x0 - 30, l->y0 + 5);
+ cairo_move_to (cr, l->x0 - 10 - n * 14, l->y0 + 10);
cairo_show_text(cr, text);
}
- cairo_set_line_width(cr, 4);
+ cairo_set_line_width(cr, 3);
cairo_move_to(cr, l->x0, l->y0);
cairo_line_to(cr, l->x1, l->y1);
cairo_stroke(cr);
#include<cairo/cairo.h>
#include"ses_core.h"
-#define SHOW_BITS 1000.0
+#define SHOW_BITS 1000.0
static void ses_text_a(cairo_t* cr, int x, int y, double a)
{
char text[64];
if (a > 0)
- cairo_set_source_rgb(cr, 0.7, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.7, 0.0, 0.0);
else
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.7);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.7);
if (a > 1e-1 || a < -1e-1) {
snprintf(text, sizeof(text) - 1, "%lgA", (int64_t)(a * SHOW_BITS) / SHOW_BITS);
char text[64];
if (v > 0)
- cairo_set_source_rgb(cr, 0.7, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.7, 0.0, 0.0);
else
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.7);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.7);
if (v > 1e-1 || v < -1e-1) {
snprintf(text, sizeof(text) - 1, "%lgV", (int64_t)(v * SHOW_BITS) / SHOW_BITS);
cairo_set_line_width(cr, 2.5);
- cairo_set_source_rgb (cr, 0, 0, 0);
+ cairo_set_source_rgb(cr, 0, 0, 0);
cairo_select_font_face(cr, "Calibri", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
- cairo_set_font_size (cr, 20);
+ cairo_set_font_size (cr, 18);
uint8_t text[64];
int n = 0;
else
cairo_move_to(cr, c->x - 20 - n * 10, c->y + 12);
break;
+
+ case SCF_EDA_NAND:
+ case SCF_EDA_NOR:
+ case SCF_EDA_NOT:
+ n = snprintf(text, sizeof(text) - 1, "%ld", c->id);
+
+ if (c->pins[2]->x < c->x)
+ cairo_move_to(cr, c->x + 10, c->y - 12);
+ else
+ cairo_move_to(cr, c->x - 10 - n * 10, c->y - 12);
+ break;
default:
n = snprintf(text, sizeof(text) - 1, "%ld", c->id);
cairo_move_to(cr, c->x - 10 - n * 10, c->y - 12);
cairo_stroke(cr);
if ((SCF_EDA_Diode == c->type || SCF_EDA_NPN == c->type) && SCF_EDA_Status_OFF == c->status)
- cairo_set_source_rgb(cr, 0.0, 0.6, 0.6);
+ SHOW_COLOR(cr, 0.0, 0.6, 0.6);
else
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0);
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0);
for (k = 0; k < c->n_pins; k++) {
p = c->pins[k];
break;
case SCF_EDA_Capacitor:
- cairo_set_source_rgb(cr, 0.8, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.8, 0.0, 0.0);
p = c->pins[SCF_EDA_Battery_POS];
if (p->y < c->y) {
cairo_line_to(cr, c->x + 8, c->y - 5);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0);
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0);
cairo_move_to(cr, c->x, c->y - 5);
} else {
cairo_move_to(cr, c->x - 8, c->y + 5);
cairo_line_to(cr, c->x + 8, c->y + 5);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0);
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0);
cairo_move_to(cr, c->x, c->y + 5);
}
cairo_line_to(cr, p->x, p->y);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.8);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.8);
p = c->pins[SCF_EDA_Battery_NEG];
if (p->y < c->y) {
cairo_move_to(cr, c->x - 8, c->y - 5);
cairo_line_to(cr, c->x + 8, c->y - 5);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0);
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0);
cairo_move_to(cr, c->x, c->y - 5);
} else {
cairo_move_to(cr, c->x - 8, c->y + 5);
cairo_line_to(cr, c->x + 8, c->y + 5);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0);
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0);
cairo_move_to(cr, c->x, c->y + 5);
}
cairo_line_to(cr, p->x, p->y);
ses_text_v(cr, c->x + 10, c->y + 10, c->v);
ses_text_a(cr, c->x + 10, c->y + 25, c->a);
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.0);
if (c->uf < 1e-6)
snprintf(text, sizeof(text) - 1, "%lgpF", c->uf * 1e6);
break;
case SCF_EDA_Inductor:
- cairo_set_source_rgb(cr, 0.8, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.8, 0.0, 0.0);
p = c->pins[SCF_EDA_Battery_POS];
#define DRAW_Inductor() \
do { \
cairo_stroke(cr); \
cairo_arc(cr, c->x + 1, c->y - 5, 5, M_PI * 0.45, M_PI * 1.55); \
cairo_stroke(cr); \
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0); \
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0); \
cairo_move_to(cr, c->x, c->y - 19); \
} else { \
cairo_arc(cr, c->x + 1, c->y + 15, 5, M_PI * 0.45, M_PI * 1.55); \
cairo_stroke(cr); \
cairo_arc(cr, c->x + 1, c->y + 5, 5, M_PI * 0.45, M_PI * 1.55); \
cairo_stroke(cr); \
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0); \
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0); \
cairo_move_to(cr, c->x, c->y + 19); \
} \
cairo_line_to(cr, p->x, p->y); \
DRAW_Inductor();
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.8);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.8);
p = c->pins[SCF_EDA_Battery_NEG];
DRAW_Inductor();
cairo_stroke(cr);
ses_text_v(cr, c->x + 10, c->y + 10, c->v);
ses_text_a(cr, c->x + 10, c->y + 25, c->a);
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.0);
if (c->uh > 100000.0)
snprintf(text, sizeof(text) - 1, "%lgH", c->uh / 1000000.0);
cairo_line_to(cr, c->x - dx1, c->y - dy1);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.8);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.8);
cairo_move_to (cr, c->x - dx1 + dx0, c->y - dy1 + dy0);
cairo_rel_line_to(cr, -dx0 * 2, -dy0 * 2);
cairo_stroke(cr);
- cairo_set_source_rgb(cr, 0.6, 0.6, 0.0);
+ SHOW_COLOR(cr, 0.6, 0.6, 0.0);
cairo_move_to (cr, c->x - dx1 - dx0, c->y - dy1 - dy0);
cairo_rel_line_to(cr, dx1 * 2, dy1 * 2);
cairo_select_font_face(cr, "Georgia", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
- ses_text_a(cr, c->x + 10, c->y + 27, c->a);
+ ses_text_a(cr, c->x + 8, c->y + 27, c->a);
- cairo_set_source_rgb(cr, 0.0, 0.0, 0.0);
+ SHOW_COLOR(cr, 0.0, 0.0, 0.0);
if (c->r + c->dr > 1e6)
snprintf(text, sizeof(text) - 1, "%lgMΩ", (int64_t)(c->r + c->dr) / 1000.0);
else if (c->r + c->dr > 999)
else
snprintf(text, sizeof(text) - 1, "%lgΩ", (int64_t)((c->r + c->dr) * 1000.0) / 1000.0);
- cairo_move_to (cr, c->x + 10, c->y - 9);
+ cairo_move_to (cr, c->x + 8, c->y - 9);
cairo_show_text(cr, text);
cairo_stroke(cr);
break;
p0 = c->pins[SCF_EDA_NAND_IN0];
p1 = c->pins[SCF_EDA_NAND_IN1];
+ if (p0->y > p1->y)
+ SCF_XCHG(p0, p1);
+
if (c->x < p->x) {
cairo_move_to(cr, p->x, p->y);
- cairo_line_to(cr, c->x + 32, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, c->x + 24, c->y);
cairo_stroke(cr);
cairo_line_to(cr, c->x - 6, c->y - 10);
cairo_line_to(cr, c->x + 6, c->y - 10);
- if (p0->y < p1->y) {
- cairo_move_to(cr, c->x - 6, c->y - 5);
- cairo_line_to(cr, c->x - 14, c->y - 5);
- cairo_line_to(cr, p0->x, p0->y);
-
- cairo_move_to(cr, c->x - 6, c->y + 5);
- cairo_line_to(cr, c->x - 14, c->y + 5);
- cairo_line_to(cr, p1->x, p1->y);
- } else {
- cairo_move_to(cr, c->x - 6, c->y - 5);
- cairo_line_to(cr, c->x - 14, c->y - 5);
- cairo_line_to(cr, p1->x, p1->y);
-
- cairo_move_to(cr, c->x - 6, c->y + 5);
- cairo_line_to(cr, c->x - 14, c->y + 5);
- cairo_line_to(cr, p0->x, p0->y);
- }
+ cairo_move_to(cr, c->x - 6, c->y - 5);
+ cairo_line_to(cr, p0->x, c->y - 5);
+ cairo_line_to(cr, p0->x, p0->y);
+ cairo_move_to(cr, c->x - 6, c->y + 5);
+ cairo_line_to(cr, p1->x, c->y + 5);
+ cairo_line_to(cr, p1->x, p1->y);
} else {
cairo_move_to(cr, p->x, p->y);
- cairo_line_to(cr, c->x - 32, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, c->x - 24, c->y);
cairo_stroke(cr);
cairo_line_to(cr, c->x + 6, c->y - 10);
cairo_line_to(cr, c->x - 6, c->y - 10);
- if (p0->y < p1->y) {
- cairo_move_to(cr, c->x + 6, c->y - 5);
- cairo_line_to(cr, c->x + 14, c->y - 5);
- cairo_line_to(cr, p0->x, p0->y);
-
- cairo_move_to(cr, c->x + 6, c->y + 5);
- cairo_line_to(cr, c->x + 14, c->y + 5);
- cairo_line_to(cr, p1->x, p1->y);
- } else {
- cairo_move_to(cr, c->x + 6, c->y - 5);
- cairo_line_to(cr, c->x + 14, c->y - 5);
- cairo_line_to(cr, p1->x, p1->y);
+ cairo_move_to(cr, c->x + 6, c->y - 5);
+ cairo_line_to(cr, p0->x, c->y - 5);
+ cairo_line_to(cr, p0->x, p0->y);
- cairo_move_to(cr, c->x + 6, c->y + 5);
- cairo_line_to(cr, c->x + 14, c->y + 5);
- cairo_line_to(cr, p0->x, p0->y);
- }
+ cairo_move_to(cr, c->x + 6, c->y + 5);
+ cairo_line_to(cr, p1->x, c->y + 5);
+ cairo_line_to(cr, p1->x, p1->y);
}
cairo_stroke(cr);
p0 = c->pins[SCF_EDA_NOR_IN0];
p1 = c->pins[SCF_EDA_NOR_IN1];
+ if (p0->y > p1->y)
+ SCF_XCHG(p0, p1);
+
if (c->x < p->x) {
cairo_move_to(cr, p->x, p->y);
- cairo_line_to(cr, c->x + 32, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, c->x + 24, c->y);
cairo_stroke(cr);
cairo_move_to(cr, c->x - 6, c->y - 10);
cairo_line_to(cr, c->x, c->y - 10);
- if (p0->y < p1->y) {
- cairo_move_to(cr, c->x - 2, c->y - 5);
- cairo_line_to(cr, c->x - 10, c->y - 5);
- cairo_line_to(cr, p0->x, p0->y);
-
- cairo_move_to(cr, c->x - 2, c->y + 5);
- cairo_line_to(cr, c->x - 10, c->y + 5);
- cairo_line_to(cr, p1->x, p1->y);
- } else {
- cairo_move_to(cr, c->x - 2, c->y - 5);
- cairo_line_to(cr, c->x - 10, c->y - 5);
- cairo_line_to(cr, p1->x, p1->y);
-
- cairo_move_to(cr, c->x - 2, c->y + 5);
- cairo_line_to(cr, c->x - 10, c->y + 5);
- cairo_line_to(cr, p0->x, p0->y);
- }
+ cairo_move_to(cr, c->x - 2, c->y - 5);
+ cairo_line_to(cr, p0->x, c->y - 5);
+ cairo_line_to(cr, p0->x, p0->y);
+ cairo_move_to(cr, c->x - 2, c->y + 5);
+ cairo_line_to(cr, p1->x, c->y + 5);
+ cairo_line_to(cr, p1->x, p1->y);
} else {
cairo_move_to(cr, p->x, p->y);
- cairo_line_to(cr, c->x - 32, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, c->x - 24, c->y);
cairo_stroke(cr);
cairo_move_to(cr, c->x + 6, c->y - 10);
cairo_line_to(cr, c->x, c->y - 10);
- if (p0->y < p1->y) {
- cairo_move_to(cr, c->x + 2, c->y - 5);
- cairo_line_to(cr, c->x + 10, c->y - 5);
- cairo_line_to(cr, p0->x, p0->y);
-
- cairo_move_to(cr, c->x + 2, c->y + 5);
- cairo_line_to(cr, c->x + 10, c->y + 5);
- cairo_line_to(cr, p1->x, p1->y);
- } else {
- cairo_move_to(cr, c->x + 2, c->y - 5);
- cairo_line_to(cr, c->x + 10, c->y - 5);
- cairo_line_to(cr, p1->x, p1->y);
+ cairo_move_to(cr, c->x + 2, c->y - 5);
+ cairo_line_to(cr, p0->x, c->y - 5);
+ cairo_line_to(cr, p0->x, p0->y);
- cairo_move_to(cr, c->x + 2, c->y + 5);
- cairo_line_to(cr, c->x + 10, c->y + 5);
- cairo_line_to(cr, p0->x, p0->y);
- }
+ cairo_move_to(cr, c->x + 2, c->y + 5);
+ cairo_line_to(cr, p1->x, c->y + 5);
+ cairo_line_to(cr, p1->x, p1->y);
}
cairo_stroke(cr);
if (c->x < p->x) {
cairo_move_to(cr, p->x, p->y);
- cairo_line_to(cr, c->x + 32, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, c->x + 24, c->y);
cairo_stroke(cr);
p = c->pins[SCF_EDA_NOT_IN];
cairo_move_to(cr, c->x - 16, c->y);
- cairo_line_to(cr, c->x - 24, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, p->x, p->y);
} else {
cairo_move_to(cr, p->x, p->y);
- cairo_line_to(cr, c->x - 32, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, c->x - 24, c->y);
cairo_stroke(cr);
cairo_line_to(cr, c->x - 16, c->y);
p = c->pins[SCF_EDA_NOT_IN];
- cairo_move_to(cr, c->x + 16, c->y);
- cairo_line_to(cr, c->x + 24, c->y);
+ cairo_move_to(cr, c->x + 16, c->y);
+ cairo_line_to(cr, p->x, c->y);
cairo_line_to(cr, p->x, p->y);
}
cairo_stroke(cr);
cairo_stroke(cr);
cairo_select_font_face(cr, "Calibri", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
- cairo_set_font_size(cr, 20);
+ cairo_set_font_size (cr, 20);
cairo_set_source_rgb(cr, 0, 0, 0);
- int64_t t = ns * count;
- int64_t s = t / 1000000000;
- t %= 1000000000;
- int64_t ms = t / 1000000;
- t %= 1000000;
- int64_t us = t / 1000;
- t %= 1000;
-
- uint8_t time[512];
- snprintf(time, sizeof(time) - 1, "%03ld,%03ld,%03ld,%03ldns", s, ms, us, t);
- cairo_move_to (cr, 10, 20);
- cairo_show_text(cr, time);
- cairo_stroke(cr);
+ if (count >= 0) {
+ int64_t t = ns * count;
+ int64_t s = t / 1000000000;
+ t %= 1000000000;
+ int64_t ms = t / 1000000;
+ t %= 1000000;
+ int64_t us = t / 1000;
+ t %= 1000;
+
+ uint8_t time[512];
+ snprintf(time, sizeof(time) - 1, "%03ld,%03ld,%03ld,%03ldns", s, ms, us, t);
+ cairo_move_to (cr, 10, 20);
+ cairo_show_text(cr, time);
+ cairo_stroke(cr);
+ }
long i;
long j;
cairo_set_line_width(cr, 2);
if (SCF_EDA_PIN_POS & el->flags)
- cairo_set_source_rgb(cr, 1, 0, 0);
+ SHOW_COLOR(cr, 1, 0, 0);
else if (SCF_EDA_PIN_NEG & el->flags)
- cairo_set_source_rgb(cr, 0, 0, 1);
+ SHOW_COLOR(cr, 0, 0, 1);
else if (SCF_EDA_PIN_OUT & el->flags)
- cairo_set_source_rgb(cr, 1, 0, 1);
+ SHOW_COLOR(cr, 1, 0, 1);
else if (SCF_EDA_PIN_IN0 & el->flags)
- cairo_set_source_rgb(cr, 0.8, 0, 0);
+ SHOW_COLOR(cr, 0.8, 0, 0);
else if (SCF_EDA_PIN_IN & el->flags)
- cairo_set_source_rgb(cr, 0, 0, 0.8);
+ SHOW_COLOR(cr, 0, 0, 0.8);
else if (SCF_EDA_PIN_CONST & el->flags)
- cairo_set_source_rgb(cr, 0, 0.6, 0);
+ SHOW_COLOR(cr, 0, 0.6, 0);
else if (SCF_EDA_PIN_CF & el->flags)
- cairo_set_source_rgb(cr, 0.8, 0, 0.8);
+ SHOW_COLOR(cr, 0.8, 0, 0.8);
else
- cairo_set_source_rgb(cr, 1, 0.5, 0.1);
+ SHOW_COLOR(cr, 1, 0.5, 0.1);
uint8_t text[64];
ScfLine* prev = NULL;
if (!prev) {
cairo_select_font_face(cr, "Calibri", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
- cairo_set_font_size(cr, 28);
+ cairo_set_font_size(cr, 26);
int n = snprintf(text, sizeof(text) - 1, "%ld", el->id);
- cairo_move_to (cr, l->x0 - 10 - n * 12, l->y0 + 10);
+ cairo_move_to (cr, l->x0 - 8 - n * 13, l->y0 + 12);
cairo_show_text(cr, text);
cairo_stroke(cr);
}
- cairo_set_line_width(cr, 4);
+ cairo_set_line_width(cr, 3);
cairo_move_to(cr, l->x0, l->y0);
cairo_line_to(cr, l->x1, l->y1);
cairo_stroke(cr);
prev = l;
}
- if (prev) {
+ if (prev && count >= 0) {
int n;
if (el->v < SCF_EDA_V_MIN)
n = snprintf(text, sizeof(text) - 1, "%lguV", (int64_t)(el->v * 1000000.0 * SHOW_BITS) / SHOW_BITS);
if (el->v == B->pins[SCF_EDA_Battery_POS]->v)
- cairo_set_source_rgb(cr, 1, 0, 0);
+ SHOW_COLOR(cr, 1, 0, 0);
else if (el->v == B->pins[SCF_EDA_Battery_NEG]->v)
- cairo_set_source_rgb(cr, 0, 0, 1);
+ SHOW_COLOR(cr, 0, 0, 1);
- cairo_set_font_size(cr, 20);
+ cairo_set_font_size(cr, 18);
if (prev->x1 - prev->x0 >= 12 + n * 12)
- cairo_move_to(cr, prev->x1 - 12 - n * 12, prev->y0 - 5);
+ cairo_move_to(cr, prev->x1 - 12 - n * 10, prev->y0 - 5);
else
cairo_move_to(cr, prev->x1 + 4, prev->y0 - 5);
char file[128];
snprintf(file, sizeof(file) - 1, "./draw_%ld.png", i);
#if 0
- if (count < 64000)
+ if (count < 64000 && count > 100)
return 0;
#endif