Esempio n. 1
0
void MpMessageDialog::Redraw (void)
{
  // redraw the panel
  MpCanvas::Redraw();

  // redraw text
  PlaceText(text,trec,Mp.theBoldFont);

  // redraw icon
  switch (icon) {
    case InfoIcon:
	if (Mp.theInfoPixmap)
	    XCopyArea(Mp.theDisplay,Mp.theInfoPixmap,Win(),Mp.theTextGC,
		      0,0, icon_size,icon_size, margin,margin);
	break;
    case AskIcon:
	if (Mp.theAskPixmap)
	    XCopyArea(Mp.theDisplay,Mp.theAskPixmap,Win(),Mp.theTextGC,
		      0,0, icon_size,icon_size, margin,margin);
	break;
    case WarnIcon:
	if (Mp.theWarnPixmap)
	    XCopyArea(Mp.theDisplay,Mp.theWarnPixmap,Win(),Mp.theTextGC,
		      0,0, icon_size,icon_size, margin,margin);
	break;
    case ErrorIcon:
	if (Mp.theErrorPixmap)
	    XCopyArea(Mp.theDisplay,Mp.theErrorPixmap,Win(),Mp.theTextGC,
		      0,0, icon_size,icon_size, margin,margin);
	break;
    default:
      break;
  }  
}
Esempio n. 2
0
void KrButton::SetTextChar( const gedString& _text )
{
	if ( Engine() && scheme.font )
	{
		if ( textBox )
			Engine()->Tree()->DeleteNode( textBox );

		textBox = 0;
		text = _text;
		PlaceText();
	}
	else
	{
		text = _text;
	}
}
Esempio n. 3
0
void KrButton::AddedtoTree()
{
	KrWidget::AddedtoTree();

	holder = new KrImNode();
	Engine()->Tree()->AddNode( this, holder );

	plate = new KrBox( plateRes );
	Engine()->Tree()->AddNode( holder, plate );

	bevel.AddToTree( Engine(), holder );
	bevel.DrawOut();
	KrEventManager::Instance()->AddListener( this );

	if ( scheme.font )
		PlaceText();
	if ( icon )
		PlaceIcon();
}
Esempio n. 4
0
File: qplot.c Progetto: WndSks/msys
int
main(int argc, char **argv)
{
    char           *file = NULL;
    int             Do_Start = 1, tmp;
    int             m, p, i, j, n, nchars, theight, twidth, xclick, yclick;
    int             downx = 1000, downy = 1000, upx, upy;
    long            id, winclick;
    Real            xmax, xmin, ymax, ymin, xdiff, ydiff, xgrid_spacing,
		    ygrid_spacing;
    Real           *x, *y, *nls;
    LineFunction    linetype = StartLine;
    char            axis[100], line[256];
    FILE           *fd;

    x = (Real *)malloc(1000000 * sizeof(Real));
    y = (Real *)malloc(1000000 * sizeof(Real));
    nls = (Real *)malloc(1000 * sizeof(Real));
    if (x == NULL || y == NULL || nls == NULL) {
	fprintf(stderr, "Can't allocate initial memory\n");
	exit(1);
    }

    ymax = xmax = -HUGE_VAL;
    ymin = xmin = HUGE_VAL;

    for (i = 1; i < argc; i++) {
	if (*argv[i] == '-') {
	    if (!strcmp(argv[i], "-nl"))
		linetype = StartPoint;
	    else if (argv[i][1] == '\0')	/* use stdin */
		file = argv[i];
	    else {

		fprintf(stderr, "Usage:\n\t %s [options] [file]\n\n", argv[0]);
		fprintf(stderr,
			"where options include:\n"
			"  -pt                   plot with points instead of lines\n\n");

		fprintf(stderr,
			"file name `-' specifies stdin\n"
			"if no file name is specified, "
			"the default is \"%s\"\n\n", DEFAULT_DATA_FILE);

		return EXIT_FAILURE;
	    }
	} else
	    file = argv[i];
    }

    if (file && !strcmp(file, "-")) {
	fd = stdin;
	file = "stdin";
    } else {
	if (file == NULL)
	    file = DEFAULT_DATA_FILE;

	if ((fd = fopen(file, "r")) == NULL) {
	    fprintf(stderr, "%s: can't open file \"%s\"\n", argv[0], file);
	    return EXIT_FAILURE;
	}
    }
    m = 0;
    p = 0;
    while (fgets(line, sizeof(line), fd) != NULL) {
	if (sscanf(line, "%f %f", &x[m], &y[m]) == 2) {
	    if (x[m] > xmax)
		xmax = x[m];
	    else if (x[m] < xmin)
		xmin = x[m];
	    if (y[m] > ymax)
		ymax = y[m];
	    else if (y[m] < ymin)
		ymin = y[m];
	    m++;
	} else {
	    nls[p] = m;
	    p++;
	}
    }
    nls[p++] = m;

    if (m == 0)
	return;

    signal(SIGTERM, nice_end);
    signal(SIGSTOP, nice_end);
    signal(SIGTSTP, nice_end);
    signal(SIGINT, nice_end);
    signal(SIGQUIT, nice_end);
    if (!InitializeGraphics(1))
	return EXIT_FAILURE;

    n = 1;
    do {
	axis_round(&xmin, &xmax, &xgrid_spacing);
	axis_round(&ymin, &ymax, &ygrid_spacing);

	id = CreateWin(0, 0, GRX_SCALE, GRX_SCALE);
	if (id == 0) {
	    fprintf(stderr, "Help id = 0\n");
	    return EXIT_FAILURE;
	}
	/* Fill the window in black for real eye-catching graphics! */
	ForeColor(0);
	StartFill(id);
	FillArea(0, 0, GRX_SCALE, GRX_SCALE);
	Done();

	/* draw outline box in white */
	ForeColor(7);

	/* Draw outline box */
	StartLine(id);
	Extend(1000, 1000);
	Extend(1000, 9000);
	Extend(9000, 9000);
	Extend(9000, 1000);
	Extend(1000, 1000);
	Done();

	/* Draw the data - either lines or dots */
	xdiff = 8000 / (xmax - xmin);
	ydiff = 8000 / (ymax - ymin);

	for (i = j = 0; j < p; j++) {
	    int             n = 0;

	    ForeColor(j % 6 + 1);
	    while (((x[i] < xmin) || (x[i] > xmax) ||
		    (y[i] < ymin) || (y[i] > ymax)) && (i < nls[j]))
		i++;

	    while (i < nls[j]) {
		if (n == 0)
		    linetype(id);
		Extend(1000 + (x[i] - xmin) * xdiff,
		       9000 - (y[i] - ymin) * ydiff);
		n++;
		if (n > 450) {
		    Done();
		    n = 0;
		    continue;
		}
		i++;
		while ((i < nls[j]) &&
		       ((x[i] < xmin) || (x[i] > xmax) ||
			(y[i] < ymin) || (y[i] > ymax)))
		    i++;
	    }
	    if (n > 0)
		Done();
	}

	/* Do axis labels in black */
	ForeColor(7);
	QueryWin(id, &twidth, &theight);
	PlaceText(id, GRX_SCALE / 2, 0, HCENTER_TEXT | TOP_TEXT, file);
	PlaceText(id, GRX_SCALE / 2, GRX_SCALE, HCENTER_TEXT | BOTTOM_TEXT,
		  "X");
	PlaceText(id, 0, GRX_SCALE / 2, LEFT_TEXT | VCENTER_TEXT, "Y");
	sprintf(axis, "%f", ymax);
	nchars = 1000 / twidth;
	axis[nchars] = 0;
	PlaceText(id, GRX_SCALE / 10, GRX_SCALE / 10,
		  RIGHT_TEXT | TOP_TEXT, axis);
	sprintf(axis, "%f", ymin);
	axis[nchars] = 0;
	PlaceText(id, GRX_SCALE / 10, 9 * GRX_SCALE / 10,
		  RIGHT_TEXT | BOTTOM_TEXT, axis);
	sprintf(axis, "%f", xmax);
	PlaceText(id, 9 * GRX_SCALE / 10, 9 * GRX_SCALE / 10,
		  HCENTER_TEXT | TOP_TEXT, axis);
	sprintf(axis, "%f", xmin);
	PlaceText(id, GRX_SCALE / 10, 9 * GRX_SCALE / 10,
		  HCENTER_TEXT | TOP_TEXT, axis);
	fflush(stdout);

	do {
	    n = WaitForCarriageReturn(&winclick, &xclick, &yclick);
	    switch (n) {
	    case 1:
		downx = xclick;
		downy = yclick;
		break;
	    case 2:
		upx = xclick;
		upy = yclick;
		if (upx < downx) {
		    tmp = downx;
		    downx = upx;
		    upx = tmp;
		}
		if (upy < downy) {
		    tmp = downy;
		    downy = upy;
		    upy = tmp;
		}
		xmin = (xmax - xmin) * (downx - 1000) / (8000) + xmin;
		xmax = (xmax - xmin) * (upx - 1000) / (8000) + xmin;
		ymax = ymax - (ymax - ymin) * (downy - 1000) / (8000);
		ymin = ymax - (ymax - ymin) * (upy - 1000) / (8000);
		break;
	    }
	} while (n && (n != 2));
    } while (n);
    nice_end(EXIT_SUCCESS);
    return EXIT_SUCCESS;
}
Esempio n. 5
0
bool TextLineBase::setProperty(P_ID id, const QVariant& v)
      {
      switch (id) {
            case P_ID::BEGIN_TEXT_PLACE:
                  _beginTextPlace = PlaceText(v.toInt());
                  break;
            case P_ID::BEGIN_TEXT_ALIGN:
                  _beginTextAlign = Align(v.toInt());
                  break;
            case P_ID::CONTINUE_TEXT_ALIGN:
                  _continueTextAlign = Align(v.toInt());
                  break;
            case P_ID::END_TEXT_ALIGN:
                  _endTextAlign = Align(v.toInt());
                  break;
            case P_ID::CONTINUE_TEXT_PLACE:
                  _continueTextPlace = PlaceText(v.toInt());
                  break;
            case P_ID::END_TEXT_PLACE:
                  _endTextPlace = PlaceText(v.toInt());
                  break;
            case P_ID::BEGIN_HOOK_HEIGHT:
                  _beginHookHeight = v.value<Spatium>();
                  break;
            case P_ID::END_HOOK_HEIGHT:
                  _endHookHeight = v.value<Spatium>();
                  break;
            case P_ID::BEGIN_HOOK_TYPE:
                  _beginHookType = HookType(v.toInt());
                  break;
            case P_ID::END_HOOK_TYPE:
                  _endHookType = HookType(v.toInt());
                  break;
            case P_ID::BEGIN_TEXT:
                  setBeginText(v.toString());
                  break;
            case P_ID::BEGIN_TEXT_OFFSET:
                  setBeginTextOffset(v.toPointF());
                  break;
            case P_ID::CONTINUE_TEXT_OFFSET:
                  setContinueTextOffset(v.toPointF());
                  break;
            case P_ID::END_TEXT_OFFSET:
                  setEndTextOffset(v.toPointF());
                  break;
            case P_ID::CONTINUE_TEXT:
                  setContinueText(v.toString());
                  break;
            case P_ID::END_TEXT:
                  setEndText(v.toString());
                  break;
            case P_ID::LINE_VISIBLE:
                  setLineVisible(v.toBool());
                  break;
            case P_ID::BEGIN_FONT_FACE:
                  setBeginFontFamily(v.toString());
                  break;
            case P_ID::BEGIN_FONT_SIZE:
                  if (v.toReal() <= 0)
                        qDebug("font size is %f", v.toReal());
                  setBeginFontSize(v.toReal());
                  break;
            case P_ID::BEGIN_FONT_BOLD:
                  setBeginFontBold(v.toBool());
                  break;
            case P_ID::BEGIN_FONT_ITALIC:
                  setBeginFontItalic(v.toBool());
                  break;
            case P_ID::BEGIN_FONT_UNDERLINE:
                  setBeginFontUnderline(v.toBool());
                  break;
            case P_ID::CONTINUE_FONT_FACE:
                  setContinueFontFamily(v.toString());
                  break;
            case P_ID::CONTINUE_FONT_SIZE:
                  setContinueFontSize(v.toReal());
                  break;
            case P_ID::CONTINUE_FONT_BOLD:
                  setContinueFontBold(v.toBool());
                  break;
            case P_ID::CONTINUE_FONT_ITALIC:
                  setContinueFontItalic(v.toBool());
                  break;
            case P_ID::CONTINUE_FONT_UNDERLINE:
                  setContinueFontUnderline(v.toBool());
                  break;
            case P_ID::END_FONT_FACE:
                  setEndFontFamily(v.toString());
                  break;
            case P_ID::END_FONT_SIZE:
                  setEndFontSize(v.toReal());
                  break;
            case P_ID::END_FONT_BOLD:
                  setEndFontBold(v.toBool());
                  break;
            case P_ID::END_FONT_ITALIC:
                  setEndFontItalic(v.toBool());
                  break;
            case P_ID::END_FONT_UNDERLINE:
                  setEndFontUnderline(v.toBool());
                  break;

            default:
                  return SLine::setProperty(id, v);
            }
      triggerLayout();
      return true;
      }
Esempio n. 6
0
void MpButton::Draw (void) 
{
  // draw pixmap icon
  if (pixmap) {

    int // clip boundaries
        copy_w = MpMin((int)icon_width,Width()-2*GetFrameTotalWidth()), 
        copy_h = MpMin((int)icon_height,Height()-2*GetFrameTotalWidth()),
        src_x  = MpMin(0,icon_width-copy_w),
        src_y  = MpMin(0,icon_height-copy_h),

        // copy destination
        dest_x = (state & icon_align_left)          // left aligned icon
                   ? GetFrameTotalWidth()+GetXPadding()
                   : (state & icon_align_right)     // right aligned icon
                      ? Width()-GetFrameTotalWidth()-copy_w-GetXPadding()
                        : (Width()-copy_w)/2,       // centered icon
        dest_y = (Height()-copy_h)/2;

    // set clip mask
    if (mask) {
      XSetClipOrigin(Mp.theDisplay,Mp.theTextGC,dest_x,dest_y);
      XSetClipMask(Mp.theDisplay,Mp.theTextGC,mask); 
    }

    // draw icon
    XCopyArea(Mp.theDisplay,pixmap,Win(),Mp.theTextGC,
              src_x,src_y, copy_w,copy_h, dest_x,dest_y);

    // reset clip mask
    if (mask) 
      XSetClipMask(Mp.theDisplay,Mp.theTextGC,None);

    // draw label together with left or right aligned icon
    if (state & icon_align_left) {
      PlaceText(Get().c_str(), 
		MpRectangle<short>(GetFrameTotalWidth()+copy_w+GetXPadding(),
				   GetFrameTotalWidth()+GetYPadding(),
				   Width()-2*GetFrameTotalWidth()-copy_w-GetXPadding(),
				   Height()-2*GetFrameTotalWidth()-GetYPadding()),
		GetFont(), 
		(state & in_pulldown) 
	          ? ((GetMode() & ~AlignMask) | AlignLeft | AlignVCenter) 
                  :  GetMode());

    } else if (state & icon_align_right) {
      PlaceText(Get().c_str(), 
		MpRectangle<short>(GetFrameTotalWidth()+GetXPadding(),
				   GetFrameTotalWidth()+GetYPadding(),
				   Width()-2*GetFrameTotalWidth()-copy_w-GetXPadding(),
				   Height()-2*GetFrameTotalWidth()-GetYPadding()),
		GetFont(), 
		(state & in_pulldown) 
	          ? ((GetMode() & ~AlignMask) | AlignLeft | AlignVCenter) 
                  :  GetMode());
    } // else text string is not drawn

  // no icon 
  } else {
    // In a pulldown menu the labels are always aligned left, otherwise
    // the aligment is not overwritten.
    PlaceText(Get().c_str(), 
	      GetXPadding() + GetFrameTotalWidth(), 
	      GetYPadding() + GetFrameTotalWidth(), 
              GetFont(), 
	      (state & in_pulldown) 
	        ? ((GetMode() & ~AlignMask) | AlignLeft | AlignVCenter) 
                :  GetMode());
  }
}