예제 #1
0
void showPlayerColor(MI0283QT9 lcd){
	
	while(1){
	
		lcd.drawText(0, 15, "Color", OBJECTCOLOR, BACKGROUND, 3);

		red = drawSlider(lcd, 60, red, red, 0,0);

		green = drawSlider(lcd, 100, green , 0 , green, 0);
		
		blue = drawSlider(lcd, 140, blue, 0, 0 , blue);
		
		//draw a car
		lcd.drawRect(100, 180, 40, 64, RGB(red,green,blue));
		lcd.drawLine(100+1,180+16,100+10, 180+26, RGB(red,green,blue));
		lcd.drawLine(100+39,180+16,100+30, 180+26, RGB(red,green,blue));
		lcd.drawLine(100+10,180+26,100+30, 180+26, RGB(red,green,blue));
		lcd.drawLine(100+10,180+38,100+30, 180+38, RGB(red,green,blue));
		lcd.drawLine(100+1,180+48,100+10, 180+38, RGB(red,green,blue));
		lcd.drawLine(100+39,180+48,100+30, 180+38, RGB(red,green,blue));
		lcd.drawLine(100+10,180+26,100+10, 180+38, RGB(red,green,blue));
		lcd.drawLine(100+30,180+26,100+30, 180+38, RGB(red,green,blue));
		lcd.drawLine(100,180+16,100+38, 180+16, RGB(red,green,blue));
		lcd.drawLine(100,180+48,100+38, 180+48, RGB(red,green,blue));
	
		if(drawButton(lcd, "Accept", 20, 270, 200, 40)){
			lcd.fillScreen(BACKGROUND);
			break;
		}
	}
}
/**
 * @brief WaveformTimeBar::drawTimeSliders
 *
 * Dessine tous les sliders
 */
void WaveformTimeBar::drawTimeSliders()
{
	drawSlider(m_beginSlider);
	drawSlider(m_barSlider);
	drawSlider(m_endSlider);
	drawSlider(m_playSlider);
}
예제 #3
0
void drawPause(bool ingame) {
	ALLEGRO_COLOR bg = al_map_rgba(255,255,255,204);
	float l = easeOut(pauseTempo);
	
	//textos
	if (ingame) {
		BLENDALPHA();
		al_draw_filled_rectangle(px(0),py(0),px(1),py(1),al_map_rgba_f(0,0,0,.375*l));
		BLENDDEFAULT();
		drawBox(.5,.5,.4,.5*l,COLOR_HGHL,COLOR_SCND);
		al_draw_text(data.font_Regular37,COLOR_TEXT,px(.5),py(lerp(.5,.26,l)),ALLEGRO_ALIGN_CENTRE,"pause");
		al_draw_text(data.font_Regular52,(selection == -1)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.34,l)),ALLEGRO_ALIGN_CENTRE,"continuar");
		al_draw_text(data.font_Regular52,(selection == 3)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.66,l)),ALLEGRO_ALIGN_CENTRE,"sair ao menu");
	} else {
		drawBitmapTinted(data.bitmap_parallax1,al_map_rgb_f(1,1,.8),.5-sinf(animTempo)*.03,.5-cosf(animTempo)*.03,game.idealProp*1.1,1.1,0,0,0);
		l = easeOut((scene.tempo > 0)?(scene.tempo):(1+scene.tempo));
		drawBox(.5,.5,.4,.5*l,COLOR_HGHL,COLOR_SCND);
		al_draw_text(data.font_Regular52,COLOR_TEXT,px(.5),py(lerp(.5,.27,l)),ALLEGRO_ALIGN_CENTRE,"configurações");
		al_draw_text(data.font_Regular52,(selection == 3)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.66,l)),ALLEGRO_ALIGN_CENTRE,"voltar");
	}
	
	BLENDALPHA();
	if (selection > (ingame?-1:0)) {
		drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.5,lerp(.5,.2,l)-fabs(sinf(animTempo*16))*.007,1./18,1./18,4,2,4,0,0,0);
	}
	if (selection < 3) {
		drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.5,lerp(.5,.8,l)+fabs(sinf(animTempo*16))*.007,1./18,1./18,4,2,5,0,0,0);
	}
	if (selection < 0 || selection > 1) {
		drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.725+fabs(sinf(animTempo*16))*.007,.5,1./18,1./18,4,2,0,0,0,0);
	} else {
		drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.275-fabs(sinf(animTempo*16))*.007,.5,1./18,1./18,4,2,6,0,0,0);
		drawSpriteSheetTinted(data.bitmap_keys,al_map_rgba_f(1,1,1,.5),.725+fabs(sinf(animTempo*16))*.007,.5,1./18,1./18,4,2,7,0,0,0);
	}
	BLENDDEFAULT();
	
	//sliders
	drawSlider(lerp(.5,.42,l),game.volumeBgm,selection == 0,"volume bgm");
	drawSlider(lerp(.5,.5,l),game.volumeSfx,selection == 1,"volume sfx");
	
	//toggle
	al_draw_text(data.font_Regular52,(selection == 2)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.58,l)),ALLEGRO_ALIGN_CENTRE,game.showPopups?"desligar tutorial":"ligar tutorial");
	
	//tela de confirmação
	if (confirmTempo > 0) {
		float m = easeOut(confirmTempo);
		BLENDALPHA();
		al_draw_filled_rectangle(px(0),py(0),px(1),py(1),al_map_rgba_f(0,0,0,.375*m));
		BLENDDEFAULT();
		drawBox(.5,.5,.5,.2*m,COLOR_HGHL,COLOR_SCND);
		al_draw_text(data.font_Regular37,COLOR_TEXT,px(.5),py(lerp(.5,.415,m)),ALLEGRO_ALIGN_CENTRE,"tem certeza de que deseja sair?");
		al_draw_text(data.font_Regular52,(selection2 == 0)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.46,m)),ALLEGRO_ALIGN_CENTRE,"sim");
		al_draw_text(data.font_Regular52,(selection2 == 1)?COLOR_HGHL:COLOR_TEXT,px(.5),py(lerp(.5,.52,m)),ALLEGRO_ALIGN_CENTRE,"nem");
	}
}
예제 #4
0
void SliderConstraintDemo::displayCallback(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    if(m_dynamicsWorld)
    {
        m_dynamicsWorld->debugDrawWorld();
    }
    drawSlider(spSlider1);
    drawSlider(spSlider2);
    renderme();
    glFlush();
    glutSwapBuffers();
} // SliderConstraintDemo::displayCallback()
예제 #5
0
파일: demo.c 프로젝트: jacereda/nanovg
void renderDemo(struct NVGcontext* vg, float mx, float my, float width, float height,
				float t, int blowup, struct DemoData* data)
{
	float x,y,popy;

	drawEyes(vg, width - 250, 50, 150, 100, mx, my, t);
	drawParagraph(vg, width - 450, 50, 150, 100, mx, my);
	drawGraph(vg, 0, height/2, width, height/2, t);
	drawColorwheel(vg, width - 300, height - 300, 250.0f, 250.0f, t);

	// Line joints
	drawLines(vg, 50, height-50, 600, 50, t);

	// Line caps
	drawWidths(vg, 10, 50, 30);

	// Line caps
	drawCaps(vg, 10, 300, 30);

	nvgSave(vg);
	if (blowup) {
		nvgRotate(vg, sinf(t*0.3f)*5.0f/180.0f*NVG_PI);
		nvgScale(vg, 2.0f, 2.0f);
	}

	// Widgets
	drawWindow(vg, "Widgets `n Stuff", 50, 50, 300, 400);
	x = 60; y = 95;
	drawSearchBox(vg, "Search", x,y,280,25);
	y += 40;
	drawDropDown(vg, "Effects", x,y,280,28);
	popy = y + 14;
	y += 45;

	// Form
	drawLabel(vg, "Login", x,y, 280,20);
	y += 25;
	drawEditBox(vg, "Email",  x,y, 280,28);
	y += 35;
	drawEditBox(vg, "Password", x,y, 280,28);
	y += 38;
	drawCheckBox(vg, "Remember me", x,y, 140,28);
	drawButton(vg, ICON_LOGIN, "Sign in", x+138, y, 140, 28, nvgRGBA(0,96,128,255));
	y += 45;

	// Slider
	drawLabel(vg, "Diameter", x,y, 280,20);
	y += 25;
	drawEditBoxNum(vg, "123.00", "px", x+180,y, 100,28);
	drawSlider(vg, 0.4f, x,y, 170,28);
	y += 55;

	drawButton(vg, ICON_TRASH, "Delete", x, y, 160, 28, nvgRGBA(128,16,8,255));
	drawButton(vg, 0, "Cancel", x+170, y, 110, 28, nvgRGBA(0,0,0,0));

	// Thumbnails box
	drawThumbnails(vg, 365, popy-30, 160, 300, data->images, 12, t);

	nvgRestore(vg);
}
예제 #6
0
void
mouseEnter(void)
{
	mouseIn = 1;

	drawSlider(actionRects[3][0].rect);
}
예제 #7
0
void SliderView::draw() {
  View::draw();
  drawOkButton(okFocused_);
  drawCancelButton(cancelFocused_);
  drawSlider();
  drawValue();
}
예제 #8
0
void
QvisOpacitySlider::paintSlider( QPainter *p, const QPalette &,
    const QRect &r )
{
    QPoint bo = p->brushOrigin();
    p->setBrushOrigin(r.topLeft());

    drawSlider(p, r.x(), r.y(), r.width(), r.height());
    p->setBrushOrigin(bo);
}
예제 #9
0
void SwitchButton::paintEvent(QPaintEvent *)
{
    //绘制准备工作,启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    //绘制背景
    drawBg(&painter);
    //绘制滑块
    drawSlider(&painter);
}
예제 #10
0
void
createSlider(DARect rect)
{
	/* fill square excluding borders */
	XFillRectangle(DADisplay, pixmap, colors->black,
		       rect.x + 1, rect.y + 1, rect.width - 2, rect.height - 2);

	drawSunkenFrame(rect);

	drawSlider(rect);
}
예제 #11
0
void DisplayGUI::drawMenu()
{
	display->clear();
	if(root == NULL){
		display->gotoXY(0, 0);
		display->print("Error! ROOT UNDEFINED");
	}
	else{
		drawStatusBar();
		drawSlider(currentMenu->getOverallItemNumber(), currentSelection);
		drawEntrys();
		drawCursor();
	}
	display->renderAll();
}
예제 #12
0
void SliderRuler::paintEvent(QPaintEvent *)
{
    //绘制准备工作,启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    //绘制背景
    drawBg(&painter);
    //绘制标尺
    drawRule(&painter);
    //绘制滑块
    drawSlider(&painter);
    //绘制当前值的提示
    drawTip(&painter);
}
예제 #13
0
파일: slider.cpp 프로젝트: Adamiko/los
void Slider::paintEvent(QPaintEvent* /*e*/)
{
	QPainter p;

	if (p.begin(this))
	{
		if (d_scalePos != None)
		{
			p.fillRect(rect(), palette().window());
			d_scale.draw(&p);
		}
		drawSlider(&p, d_sliderRect);
	}
	p.end();
}
예제 #14
0
void SliderConstraintDemo::clientMoveAndDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    float dt = float(getDeltaTimeMicroseconds()) * 0.000001f;
    //during idle mode, just run 1 simulation step maximum
    int maxSimSubSteps = m_idle ? 1 : 1;
    if(m_idle)
    {
        dt = 1.0/420.f;
    }
    int numSimSteps = m_dynamicsWorld->stepSimulation(dt,maxSimSubSteps);
    //optional but useful: debug drawing
    m_dynamicsWorld->debugDrawWorld();
    bool verbose = false;
    if (verbose)
    {
        if (!numSimSteps)
            printf("Interpolated transforms\n");
        else
        {
            if (numSimSteps > maxSimSubSteps)
            {
                //detect dropping frames
                printf("Dropped (%i) simulation steps out of %i\n",numSimSteps - maxSimSubSteps,numSimSteps);
            } else
            {
                printf("Simulated (%i) steps\n",numSimSteps);
            }
        }
    }
    renderme();
    drawSlider(spSlider1);
    drawSlider(spSlider2);
    glFlush();
    glutSwapBuffers();
} // SliderConstraintDemo::clientMoveAndDisplay()
예제 #15
0
void
mouseLeave(void)
{
	mouseIn = 0;

	/* mouse pointer left the dockapp window */
	DAProcessActionRects(0, 0, actionRects[4], 2, NULL);

	/* if the button is still depressed, make it go up again. */
/* TODO: Use data in actionRects[4] here instead of below check */
	if (buttonDown != NULL)
		btnUp(0, 0, *buttonDown, NULL);

	drawSlider(actionRects[4][1].rect);
}
예제 #16
0
파일: thinslider.cpp 프로젝트: falkTX/muse
void ThinSlider::paintEvent(QPaintEvent* /*ev*/)
      {
      QPainter p(this);

      /* Scale is not supported
      if (p.begin(this)) {
            if (d_scalePos != None) {
                  p.fillRect(rect(), palette().window());
                  d_scale.draw(&p);
                  }
            drawSlider(&p, d_sliderRect);
            }
      p.end();
      */
      drawSlider(&p, d_sliderRect);
      }
예제 #17
0
//! Draw the QwtSlider
void QwtSlider::draw(QPainter *painter, const QRect&)
{
    if (d_data->scalePos != NoScale)
    {
#if QT_VERSION < 0x040000
        scaleDraw()->draw(painter, colorGroup());
#else
        scaleDraw()->draw(painter, palette());
#endif
    }

    drawSlider(painter, d_data->sliderRect);

    if ( hasFocus() )
        QwtPainter::drawFocusRect(painter, this, d_data->sliderRect);
}
예제 #18
0
void ScrollPanner::paintEvent(QPaintEvent *)
{
    QPainter p(this);

    p.setPen(m_pen);
    p.setBrush(m_brush);
    p.setOpacity(m_opacity);

    drawBackground(p, rect().adjusted(0,0,-1,-1));

    p.setPen(m_panPen);
    p.setBrush(m_panBrush);
    p.setOpacity(m_panOpacity);

    drawSlider(p, QRect(m_valueXpan, m_valueYpan,
                        m_sizeXpan, m_sizeYpan).adjusted(0,0,-1,-1));
}
예제 #19
0
//! Draw the QwtSlider
void QwtSlider::draw(QPainter *painter, const QRect&)
{
    if (d_scalePos != None)
        scaleDraw()->draw(painter);

    drawSlider(painter, d_sliderRect);
    if ( hasFocus() )
    {
        const QRect rect = d_sliderRect;

#if QT_VERSION < 300
        style().drawFocusRect(painter, rect, colorGroup());
#else
        style().drawPrimitive(QStyle::PE_FocusRect, painter,
            rect, colorGroup());
#endif
    }
}
예제 #20
0
파일: slider.cpp 프로젝트: TheMyths/Core
void UIFloatSlider::drawContent() {
    if(!value) return;

    float position;

    if (min!=max) {
        position = std::min(1.0f, ((*value) - min) / ((float)max-min));

    } else {
        if(dragging) {
            position = std::max(0.0f, std::min(1.0f, *value / (old_value * 2.0f)));
        } else {
            position = 0.5f;
        }
    }

    drawSlider(position);
}
예제 #21
0
void
sliderMove(int x, int y, DARect rect, void *data)
{
	if (buttonDown == NULL /* ||
				  rect.x != buttonDown->x ||
				  rect.y != buttonDown->y ||
				  rect.width != buttonDown->width ||
				  rect.height != buttonDown->height */)
		return;

	sliderPos = (float)(rect.height - y) / (float)rect.height;
	if (sliderPos > 1.0)
		sliderPos = 1.0;

	if (sliderPos < 0.0)
		sliderPos = 0.0;

	drawSlider(rect);
}
예제 #22
0
/*!
   Qt paint event handler
   \param event Paint event
*/
void QwtSlider::paintEvent( QPaintEvent *event )
{
    QPainter painter( this );
    painter.setClipRegion( event->region() );

    QStyleOption opt;
    opt.init(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);

    if ( d_data->scalePosition != QwtSlider::NoScale )
    {
        if ( !d_data->sliderRect.contains( event->rect() ) )
            scaleDraw()->draw( &painter, palette() );
    }

    drawSlider( &painter, d_data->sliderRect );

    if ( hasFocus() )
        QwtPainter::drawFocusRect( &painter, this, d_data->sliderRect );
}
예제 #23
0
  void CursynthGui::drawControl(const Control* control, bool active) {
    DisplayDetails* details = details_lookup_[control];
    if (!details)
      return;

    // Draw label.
    if (details->label.size()) {
      if (active)
        attron(A_BOLD);
      move(details->y, details->x);
      printw(gettext(details->label.c_str()));
      attroff(A_BOLD);
    }

    // Draw status.
    if (control->display_strings().size()) {
      int display_index = static_cast<int>(control->current_value());
      drawText(details, control->display_strings()[display_index], active);
    }
    else
      drawSlider(details, control->getPercentage(), active);
  }
예제 #24
0
void displayUISettings()
{
    // getting window dimensions
    GLshort w=glutGet(GLUT_WINDOW_WIDTH);
    uiS.height=glutGet(GLUT_WINDOW_HEIGHT);
    GLshort percUnitW = w/100;
    GLshort percUnitH = uiS.height/100;

    glDisable(GL_DEPTH_TEST);
    glClear(GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_PROJECTION);
    glPushMatrix(); //to prepare for return to 3D
    glLoadIdentity();
    gluOrtho2D(0,w,0,uiS.height);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    //UI background 20% of screen gap from edges
    glColor3f(1,1,1); //white
    glBegin(GL_QUADS);
        glVertex2s(percUnitW*20,percUnitH*20);
        glVertex2s(w-percUnitW*20,percUnitH*20);
        glVertex2s(w-percUnitW*20,uiS.height-percUnitH*20);
        glVertex2s(percUnitW*20,uiS.height-percUnitH*20);
    glEnd();

    glColor3f(0,0,1);
    displayText("SETTINGS:", percUnitW*22, percUnitH*78, 'l');

    //draw chosen colour if not random
    if(!tmpState.colourRand){
        uiS.chosenClr[0] = percUnitW*25;
        uiS.chosenClr[1] = percUnitH*55;
        glColor3fv(tmpState.colour);
        glBegin(GL_QUADS);
            glVertex2sv(uiS.chosenClr);
            glVertex2s(uiS.chosenClr[0]+20, uiS.chosenClr[1]);
            glVertex2s(uiS.chosenClr[0]+20, uiS.chosenClr[1]+20);
            glVertex2s(uiS.chosenClr[0], uiS.chosenClr[1]+20);
        glEnd();
        displayText("Chosen Colour", uiS.chosenClr[0]+25, uiS.chosenClr[1]+2, 'm');
    }

    //for colourpicker triangle
    drawColourPicker(percUnitW, percUnitH);
    //check box for selection of random colour
    uiS.randClr[0]=percUnitW*35;
    uiS.randClr[1]=percUnitH*55;
    drawCheckBox(uiS.randClr[0],uiS.randClr[1],"Random Colour");
    //if random colour selected draw cross
    if(tmpState.colourRand){
        drawCheck(uiS.randClr[0],uiS.randClr[1]);
    }

    //for selection of angle: draw a box then distribute evenly within 9 circles of radius 10, in 3 rows of 3, filled in for chosen angle
    drawAnglePresets(percUnitW, percUnitH);

    //check box for selection of random angle
    uiS.randAng[0] = percUnitW*60;
    uiS.randAng[1] = percUnitH*55;
    drawCheckBox(uiS.randAng[0], uiS.randAng[1] ,"Random Angle");

    //slider bar for selection of lift charge/intial velocity
    uiS.velocityL[0]= percUnitW*23;
    uiS.velocityL[1]= percUnitH*42;
    uiS.velocityR[0]= percUnitW*65;
    uiS.velocityR[1]= percUnitH*42;
    snprintf(uiS.velocityMnTxt, 6, "%4.1f", tmpState.velocityMin);
    snprintf(uiS.velocityMxTxt, 6, "%4.1f", tmpState.velocityMax);
    displayText("Lift Charge giving initial velocity in m/s:", uiS.velocityL[0]-20, uiS.velocityL[1]+15, 'm');
    drawSlider(uiS.velocityL, uiS.velocityR);
    displayText(uiS.velocityMnTxt, uiS.velocityL[0]-30, uiS.velocityL[1]-4, 'm');
    displayText(uiS.velocityMxTxt, uiS.velocityR[0]+5, uiS.velocityR[1]-4, 'm');

    //x coords of chosen velocity determined by (chosenValue - minValue)*((xRight - xLeft)/(maxValue-minValue)) + xLeft
    uiS.velocityChX = ((tmpState.velocityCh - tmpState.velocityMin)*(((float)uiS.velocityR[0]-(float)uiS.velocityL[0])/(tmpState.velocityMax-tmpState.velocityMin))+(float)uiS.velocityL[0]);
    drawMarker(uiS.velocityChX, uiS.velocityL[1]);
    snprintf(uiS.velocityChTxt, 6, "%3.1f", tmpState.velocityCh);
    displayText(uiS.velocityChTxt, uiS.velocityChX-10, uiS.velocityL[1]-17, 'm');

    //slider bar for selection of fuser timer
    uiS.fuseL[0]= percUnitW*23;
    uiS.fuseL[1]= percUnitH*32;
    uiS.fuseR[0]= percUnitW*65;
    uiS.fuseR[1]= percUnitH*32;
    snprintf(uiS.fuseMnTxt, 6, "%5.1f", tmpState.fuseMin);
    snprintf(uiS.fuseMxTxt, 6, "%5.1f", tmpState.fuseMax);
    displayText("Fuse timer from launch to explosion in milliseconds:", uiS.fuseL[0]-20, uiS.fuseL[1]+15, 'm');
    drawSlider(uiS.fuseL, uiS.fuseR);
    displayText(uiS.fuseMnTxt, uiS.fuseL[0]-40, uiS.fuseL[1]-4, 'm');
    displayText(uiS.fuseMxTxt, uiS.fuseR[0]+5, uiS.fuseR[1]-4, 'm');

    //x coords of chosen fuse determined by (chosenValue - minValue)*((xRight - xLeft)/(maxValue-minValue)) + xLeft
    uiS.fuseChX = ((tmpState.fuseCh - tmpState.fuseMin)*(((float)uiS.fuseR[0]-(float)uiS.fuseL[0])/(tmpState.fuseMax-tmpState.fuseMin))+(float)uiS.fuseL[0]);
    drawMarker(uiS.fuseChX, uiS.fuseL[1]);
    snprintf(uiS.fuseChTxt, 6, "%5.1f", tmpState.fuseCh);
    displayText(uiS.fuseChTxt, uiS.fuseChX-10, uiS.fuseL[1]-17, 'm');


    //save button
    uiS.saveBL[0] = percUnitW*70;
    uiS.saveBL[1] = percUnitH*31;
    uiS.saveTR[0] = percUnitW*79;
    uiS.saveTR[1] = percUnitH*39;
    glColor3f(0, 0.5, 0);
    glBegin(GL_QUADS);
        glVertex2sv(uiS.saveBL);
        glVertex2s(uiS.saveTR[0], uiS.saveBL[1]);
        glVertex2sv(uiS.saveTR);
        glVertex2s(uiS.saveBL[0], uiS.saveTR[1]);
    glEnd();
    displayText("Save", uiS.saveBL[0]+5, uiS.saveBL[1]+5,'l');
    //underline S
    glLineWidth(2);
    glBegin(GL_LINES);
        glVertex2s(uiS.saveBL[0]+6,uiS.saveBL[1]+3);
        glVertex2s(uiS.saveBL[0]+18,uiS.saveBL[1]+3);
    glEnd();
    glLineWidth(1);

    //cancel button
    uiS.cancelBL[0] = percUnitW*70;
    uiS.cancelBL[1] = percUnitH*22;
    uiS.cancelTR[0] = percUnitW*79;
    uiS.cancelTR[1] = percUnitH*30;
    glColor3f(0.6, 0, 0);
    glBegin(GL_QUADS);
        glVertex2sv(uiS.cancelBL);
        glVertex2s(uiS.cancelTR[0], uiS.cancelBL[1]);
        glVertex2sv(uiS.cancelTR);
        glVertex2s(uiS.cancelBL[0], uiS.cancelTR[1]);
    glEnd();
    displayText("Cancel", uiS.cancelBL[0]+5, uiS.cancelBL[1]+5,'l');
    //underline C
    glLineWidth(2);
    glBegin(GL_LINES);
        glVertex2s(uiS.cancelBL[0]+6,uiS.cancelBL[1]+3);
        glVertex2s(uiS.cancelBL[0]+18,uiS.cancelBL[1]+3);
    glEnd();
    glLineWidth(1);

    // returning to 3D
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);

    glEnable(GL_DEPTH_TEST);
}
예제 #25
0
//=================================================== draw widget
//===============================================================
void TFWidgetRen::draw_widget()
{

  glColor4f(.1, .07, .57, 1);                  //balls
  float spos[3] = {0,0,0};
  drawSphere(spos, blball);                    //bottom left
  spos[0] = width;
  drawSphere(spos, brball);                    //bottom right
  spos[1] = height;
  drawSphere(spos, trball);                    //top    right
  spos[0] = 0;
  drawSphere(spos, tlball);                    //top    left

  glColor4f(.09, .34, .55, 1);                 //bars
  float bpos[3] = {0,0,0};
  drawBar(-90, WdgXAxis, height, bpos, lbar);  //left
  drawBar(90, WdgYAxis, width, bpos, bbar);    //bottom
  bpos[1] = height;
  drawBar(90, WdgYAxis, width, bpos, tbar);    //top
  bpos[0] = width;
  bpos[1] = 0;
  drawBar(-90, WdgXAxis, height, bpos, rbar);  //right
  

  glColor4f(1,1,1,0);                          //transfer function map depth
  glLoadName(tfsheet1);
  //glEnable(GL_TEXTURE_3D_EXT);
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  glDisable(GL_LIGHTING);
  //glBindTexture(GL_TEXTURE_3D_EXT, gluvv.tf.ptextex);
  glBegin(GL_QUADS);{  //draw the transfer function
    glTexCoord3f(0, 0, .33333);   
    glVertex3f(barRad*1.5,    barRad*1.5,     0);
    glTexCoord3f(1, 0, .33333);   
    glVertex3f(width-barRad*1.5, barRad*1.5,     0);
    glTexCoord3f(1, 1, .33333);   
    glVertex3f(width-barRad*1.5, height-barRad*1.5, 0);
    glTexCoord3f(0, 1, .33333);   
    glVertex3f(barRad*1.5,    height-barRad*1.5,0);
  } glEnd();
  glDisable(GL_BLEND);
  glDisable(GL_TEXTURE_3D_EXT);
  glEnable(GL_LIGHTING);                       //---------------------------

  draw_probe();                                //draw probe data value

  //-------------- load new pixel texture ----------------------------------
  if(gluvv.tf.loadme){                         
    clearPtex();
    tris->rasterize(gluvv.tf.ptex);
    brush->rasterize(gluvv.tf.ptex);
    loadPtex();
    gluvv.tf.loadme = 0;
  } //----------------------------------------------------------------------

  if(pickedTri){                               //boundary emphasis slider
    LevWidget * tt;
    if(tt = tris->get(pickedTri)){
      float slider = tt->getBE();
      float bepos[3] = {(width - 2*ballRad)*slider + ballRad, height, 0};
      drawSlider(90, WdgYAxis, bepos, beslider);
    }
  }

  glColor4f(1,1,1,1);                          //transfer function map color
  glLoadName(tfsheet1);
  glEnable(GL_TEXTURE_3D_EXT);
  if(mode == colorBlend){
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  }
  else 
    glDisable(GL_BLEND);
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_EQUAL);
  glDisable(GL_LIGHTING);
  glBindTexture(GL_TEXTURE_3D_EXT, gluvv.tf.ptextex);
  glBegin(GL_QUADS);{  //draw the transfer function
    glTexCoord3f(0, 0, .5);   
    glVertex3f(barRad*1.5,    barRad*1.5,     0);
    glTexCoord3f(1, 0, .5);   
    glVertex3f(width-barRad*1.5, barRad*1.5,     0);
    glTexCoord3f(1, 1, .5);   
    glVertex3f(width-barRad*1.5, height-barRad*1.5, 0);
    glTexCoord3f(0, 1, .5);   
    glVertex3f(barRad*1.5,    height-barRad*1.5,0);
  } glEnd();
  glDepthFunc(GL_LESS);
  glDisable(GL_BLEND);
  glDisable(GL_TEXTURE_3D_EXT);
  glEnable(GL_LIGHTING);                       //----------------------------

  glPushMatrix();{                             //draw levoy triangles
    glTranslatef(ballRad, ballRad, ballRad);
    tris->draw();
  } glPopMatrix();

  if(gluvv.picking) brush->draw();
}
예제 #26
0
Boolean MCNativeTheme::drawwidget(MCDC *dc, const MCWidgetInfo & winfo,
                                  const MCRectangle & drect)
{
	GC gc ;
	
	MCThemeDrawInfo di ;

	MCDC * t_dc = dc ;	
	Boolean ret = False;
	
	static MCRectangle gtkpixrect = {0,0,0,0};

	Display *display = MCdpy;

	GdkRectangle rect;
	GdkRectangle cliprect;

	MCRectangle trect = drect;
	MCRectangle crect = drect;

	if (winfo.type == WTHEME_TYPE_TAB)
		crect.height--; //make sure tab doesn't draw over tab pane
	

	
	rect = MCRectangleToGdkRectangle(trect);
	cliprect = MCRectangleToGdkRectangle(crect);
	rect.x = cliprect.x = 0;
	rect.y = cliprect.y = 0;


	if (rect.width <= 0 || rect.height <= 0)
		return False;
	GtkThemeWidgetType  moztype;
	gint flags = 0;
	GtkWidgetState state = getpartandstate(winfo, moztype, flags);

	
	
	switch(winfo.type)
	{
	case WTHEME_TYPE_TABPANE:
		state.curpos = 0;
		if(winfo.attributes & WTHEME_ATT_TABPOSBOTTOM
		        || winfo.attributes & WTHEME_ATT_TABPOSTOP)
			state.maxpos = rect.width;
		else if(winfo.attributes & WTHEME_ATT_TABPOSLEFT
		        || winfo.attributes & WTHEME_ATT_TABPOSRIGHT)
			state.maxpos = rect.height;
		else
			state.maxpos = rect.width; // XXX therefore default tabpos is top

		if(winfo.datatype == WTHEME_DATA_TABPANE)
		{

			MCWidgetTabPaneInfo *inf = (MCWidgetTabPaneInfo*)winfo.data;

			state.curpos = inf->gap_start - 1;
			state.maxpos = inf->gap_length + 2;

		}
		
		make_theme_info ( di, moztype, gtkpix, &rect, &cliprect, state, flags, crect);
		t_dc -> drawtheme ( THEME_DRAW_TYPE_GTK, &di ) ;
		
		ret = True;
		break;
		
		
	case WTHEME_TYPE_COMBO:
		{
			MCWidgetInfo twinfo = winfo;
			MCRectangle comboentryrect,combobuttonrect;
			//draw text box
			twinfo.part = WTHEME_PART_COMBOTEXT;
			getwidgetrect(twinfo, WTHEME_METRIC_PARTSIZE,drect,comboentryrect);
			twinfo.part = WTHEME_PART_COMBOBUTTON;
			getwidgetrect(twinfo, WTHEME_METRIC_PARTSIZE,drect,combobuttonrect);
			twinfo.type = WTHEME_TYPE_TEXTFIELD_FRAME;
			drawwidget(dc, twinfo, comboentryrect);
			twinfo.type = WTHEME_TYPE_COMBOBUTTON;
			drawwidget(dc, twinfo, combobuttonrect);
			return True;
		}
		
	
	
#define B_WIDTH 3
		
	case WTHEME_TYPE_TEXTFIELD_FRAME:
	{
		GtkWidgetState t_old_state;
		t_old_state = state;

		MCRectangle t_old_clip;
		t_old_clip = dc -> getclip();

		// crect is the target rectangle for the whole control
		// cliprect and rect are essentially the same
		
		GdkRectangle t_bounds;
		MCRectangle t_dst_bounds;
		MCRectangle t_clip;
		
		// First render the top and bottom borders. We render a control 8 pixels
		// high, but clipped to the border width.

		t_bounds . x = 0;
		t_bounds . y = 0;
		t_bounds . width = rect . width;
		t_bounds . height = 8;

		MCU_set_rect(t_dst_bounds, crect . x, crect . y, crect . width, 8);
		MCU_set_rect(t_clip, crect . x, crect . y, crect . width, B_WIDTH);
		make_theme_info(di, moztype, gtkpix, &t_bounds, &t_bounds, state, flags, t_dst_bounds);
		dc -> setclip(t_clip);
		dc -> drawtheme(THEME_DRAW_TYPE_GTK, &di);
		MCU_set_rect(t_dst_bounds, crect . x, crect . y + crect . height - 8, crect . width, 8);
		MCU_set_rect(t_clip, crect . x, crect . y + crect . height - B_WIDTH, crect . width, B_WIDTH);
		make_theme_info(di, moztype, gtkpix, &t_bounds, &t_bounds, state, flags, t_dst_bounds);
		dc -> setclip(t_clip);
		dc -> drawtheme(THEME_DRAW_TYPE_GTK, &di);
		
		// Now render the left and right borders. We render a control 8 pixels
		// wide, but clipped to the border width

		t_bounds . x = 0;
		t_bounds . y = 0;
		t_bounds . width = 8;
		t_bounds . height = rect . height;

		MCU_set_rect(t_dst_bounds, crect . x, crect . y, 8, crect . height);
		MCU_set_rect(t_clip, crect . x, crect . y + B_WIDTH, B_WIDTH, crect . height - 2 * B_WIDTH);
		make_theme_info(di, moztype, gtkpix, &t_bounds, &t_bounds, state, flags, t_dst_bounds);
		dc -> setclip(t_clip);
		dc -> drawtheme(THEME_DRAW_TYPE_GTK, &di);
		MCU_set_rect(t_dst_bounds, crect . x + crect . width - 8, crect . y, 8, crect . height);
		MCU_set_rect(t_clip, crect . x + crect . width - B_WIDTH, crect . y + B_WIDTH, B_WIDTH, crect . height - 2 * B_WIDTH);
		make_theme_info(di, moztype, gtkpix, &t_bounds, &t_bounds, state, flags, t_dst_bounds);
		dc -> setclip(t_clip);
		dc -> drawtheme(THEME_DRAW_TYPE_GTK, &di);

		dc -> setclip(t_old_clip);
	}
	break ;

		
	case WTHEME_TYPE_SLIDER:
		drawSlider(dc, winfo, drect);
		return True;
		break;
		
		
	case WTHEME_TYPE_SCROLLBAR:
		drawScrollbar(dc, winfo, drect);
		return True;
		break;
		
		
	case WTHEME_TYPE_PROGRESSBAR:
		ret = drawprogressbar(dc, winfo, drect);
		return ret;
		break;
		
		
	case WTHEME_TYPE_GROUP_FRAME:
		
		make_theme_info ( di, moztype, gtkpix, &rect, &cliprect, state, flags, crect);
		t_dc -> drawtheme ( THEME_DRAW_TYPE_GTK, &di ) ;
		ret = True;
		
	break;
		
		
	default:

		make_theme_info ( di, moztype, gtkpix, &rect, &cliprect, state, flags, crect);
		t_dc -> drawtheme ( THEME_DRAW_TYPE_GTK, &di ) ;
		ret = True;
	}
	
	return ret;
}
/* This Proc handles the on-the-fly data CD writing */
MRESULT EXPENTRY waveinfoStatusDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  char text[CCHMAXPATH*2 +10];
  char title[CCHMAXPATH];
  SWCNTRL swctl;
  PID pid;
  int a;


  switch (msg)
    {
    case WM_PAINT:
      {
        HPS hps;
        RECTL rcl, rclSource;
        POINTL ptl;
        LONG lTemp;
        BOOL bUseCustomPainting=TRUE;
        LONG lWidthX;
        LONG lWidthY;
        LONG  lColor;
        ULONG attrFound;


        if(bUseCustomPainting) {
          //          if(allBMPs[CTRLIDX_BG].hbm) {
          if(1) {
            hps=WinBeginPaint(hwnd, NULLHANDLE, &rcl);
            rclSource.xLeft=0;
            rclSource.yBottom=0;
#if 0
            rclSource.yTop=allBMPs[CTRLIDX_BG].bmpInfoHdr.cy;
            rclSource.xRight=allBMPs[CTRLIDX_BG].bmpInfoHdr.cx;
            lTemp=rcl.xLeft/rclSource.xRight;
            ptl.x=lTemp*rclSource.xRight;
            lTemp=rcl.yBottom/rclSource.yTop;
            lTemp*=rclSource.yTop;
#endif

            //    rcl.yBottom+=4;
            rclSource=rcl;
            rcl.yTop+=4;
            WinFillRect(hps, &rclSource, CLR_RED);

            /* Border */
            lWidthX=WinQuerySysValue(HWND_DESKTOP, SV_CXBORDER);
            lWidthY=WinQuerySysValue(HWND_DESKTOP, SV_CYBORDER);

            GpiCreateLogColorTable(hps, 0, LCOLF_RGB, 0, 0, NULL);
#if 0
        if ( (WinQueryPresParam(hwnd, PP_BACKGROUNDCOLOR, 0, &attrFound, sizeof(attrFound),
                                                &lColor, QPF_PURERGBCOLOR)) == 0 )
           lColor = WinQuerySysColor(HWND_DESKTOP, SYSCLR_DIALOGBACKGROUND, 0);
#endif

            WinQueryWindowRect(hwnd, &rcl);
            ptl.x=1;
            ptl.y=0;
            GpiMove(hps, &ptl);
            GpiSetColor(hps, CLR_BLACK);
            ptl.x=rcl.xRight-1;
            GpiLine(hps,&ptl);
            ptl.y=rcl.yTop-1;
            GpiLine(hps,&ptl);
            GpiSetColor(hps, SYSCLR_SHADOW);
            ptl.x=rcl.xLeft;
            GpiLine(hps,&ptl);
            ptl.y=0;
            GpiLine(hps,&ptl);

            rcl.yTop-=1;
            rcl.yBottom+=1;
            rcl.xLeft+=1;
            rcl.xRight-=1;

            WinDrawBorder( hps,&rcl, 1, 1, 0, 0, 0x400);
            rcl.yTop-=1;
            rcl.yBottom+=1;
            rcl.xLeft+=1;
            rcl.xRight-=1;

            /* Get active border color */
            if(WinQueryActiveWindow(HWND_DESKTOP)==hwnd) {
              if ( (WinQueryPresParam(hwnd, PP_BORDERCOLOR, 0, &attrFound, sizeof(attrFound),
                                      &lColor, QPF_PURERGBCOLOR)) == 0 )
                lColor = WinQuerySysColor(HWND_DESKTOP, SYSCLR_DIALOGBACKGROUND, 0);
            }
            else {
              /* Inactive border color */
              if ( (WinQueryPresParam(hwnd, PP_INACTIVECOLOR, 0, &attrFound, sizeof(attrFound),
                                      &lColor, QPF_PURERGBCOLOR)) == 0 )
                lColor = WinQuerySysColor(HWND_DESKTOP, SYSCLR_DIALOGBACKGROUND, 0);
            }
            /*            Get Border size */
            WinSendMsg(hwnd, WM_QUERYBORDERSIZE, MPFROMP(&ptl),0);

            WinDrawBorder(hps,&rcl, ptl.x-2, ptl.y-2, lColor, 0, 0);

#if 0
            while(ptl.x<rcl.xRight) {
              ptl.y=lTemp;
              while(ptl.y<rcl.yTop) {/* y direction */
                //DosBeep(5000,100);
                WinDrawBitmap(hps, allBMPs[CTRLIDX_BG].hbm,
                              &rclSource, 
                              (PPOINTL)&ptl,
                              0, 0,
                              DBM_IMAGEATTRS);
                ptl.y+=allBMPs[CTRLIDX_BG].bmpInfoHdr.cy;
                //DosSleep(200);
              };
              ptl.x+=allBMPs[CTRLIDX_BG].bmpInfoHdr.cx; 
            };
#endif
            WinEndPaint(hps);
            return (MRESULT)0;
          }
        }
        break;
      }

    case WM_DRAWITEM:
      switch(SHORT1FROMMP(mp1))
        {
        case SLIDERID:
          return drawSlider(hwnd, msg, mp1, mp2, SHORT1FROMMP(mp1));
        default:
          break;
        }              
      break;
    case WM_INITDLG:
      /* Add switch entry */
      memset(&swctl,0,sizeof(swctl));
      WinQueryWindowProcess(hwnd,&pid,NULL);
      swctl.hwnd=hwnd;
      swctl.uchVisibility=SWL_VISIBLE;
      swctl.idProcess=pid;
      swctl.bProgType=PROG_DEFAULT;
      swctl.fbJump=SWL_JUMPABLE;
      WinAddSwitchEntry(&swctl);

#if 0      
      WinMessageBox( HWND_DESKTOP, HWND_DESKTOP, "",
                     "",
                     0UL, MB_OK | MB_ICONEXCLAMATION|MB_MOVEABLE );
#endif
      //      oldProc=WinSubclassWindow(WinWindowFromID(hwnd, IDST_TEXT), newProc);
      hwndNew=WinCreateWindow(hwnd, CLASS_NAME, "Title", WS_VISIBLE |WS_TABSTOP, 10,50, SLIDERID, 40, 
                              hwnd, HWND_TOP, SLIDERID, NULLHANDLE, NULLHANDLE);
      WinShowWindow(hwnd, TRUE);
      //      WinQueryWindowPos(hwndNew,&swpSl);
      return (MRESULT) TRUE;
      /* WM_APPTERMINATENOTIFY messages are sent from the helper programs e.g. format checker. */
    case WM_CLOSE:
      WinDismissDlg(hwnd,0);
      return FALSE;
    case WM_CONTROL:
      {
        switch(SHORT2FROMMP(mp1))
          {
          case SLN_SLIDERTRACK:
            {
              switch(SHORT1FROMMP(mp1))
                {
                case SLIDERID:
                  DosBeep(5000, 10);
                  break;
                default:
                  break;
                }/* switch */
              return (MRESULT) 0;
              break;
            }
          case SLN_CHANGE:
            {
              switch(SHORT1FROMMP(mp1))
                {
                case SLIDERID:
                  DosBeep(500, 100);
                  break;
                default:
                  break;
                }/* switch */
              return (MRESULT)TRUE;
            }
          default:
            break;
          }/* switch */
        break;
      }/* WM_CONTROL */
      
    case WM_COMMAND:
      switch(SHORT1FROMMP(mp1))
        {
        case DID_OK:
          /* User pressed the OK button */
          WinPostMsg(hwnd,WM_CLOSE,0,0);
          break;
        case IDPB_RIGHT:
          WinPostMsg( WinWindowFromID(hwnd, SLIDERID),
                      SLM_SETSLIDERINFO,
                      MPFROM2SHORT(SMA_SLIDERARMPOSITION, SMA_RANGEVALUE),
                      MPFROMLONG( (LONG) 70 ));
          
          break;
        case IDPB_LEFT:
          WinPostMsg( WinWindowFromID(hwnd, SLIDERID),
                      SLM_SETSLIDERINFO,
                      MPFROM2SHORT(SMA_SLIDERARMPOSITION, SMA_RANGEVALUE),
                      MPFROMLONG( (LONG) 20 ));
          
          break;
        case IDPB_SIZE:
          {
            SWP swp;
              RXSTRING arg[2];                       /* argument string for REXX  */
              RXSTRING rexxretval;                /* return value from REXX    */
              APIRET   rc;                        /* return code from REXX     */
              SHORT    rexxrc = 0;                /* return code from function */
              char chrThis[20];
              char chrHwnd[20];

              char    *str = "These words will be swapped"; /* text to swap   */

#if 0
              RexxRegisterFunctionExe("CWRXFunc1", (PFN)rexxFunc1);
              

              sprintf(chrThis, "%d",123);
              sprintf(chrHwnd, "%d", WinQueryWindow(hwnd,QW_PARENT));

              /* By setting the strlength of the output RXSTRING to zero, we   */
              /* force the interpreter to allocate memory and return it to us. */
              /* We could provide a buffer for the interpreter to use instead. */
              rexxretval.strlength = 0L;          /* initialize return to empty*/
              
              MAKERXSTRING(arg[0], chrHwnd, strlen(chrHwnd));/* create input argument     */
              MAKERXSTRING(arg[1], chrThis, strlen(chrThis));/* create input argument     */

              /* Here we call the interpreter.  We don't really need to use    */
              /* all the casts in this call; they just help illustrate         */
              /* the data types used.                                          */
              rc=RexxStart((LONG)      2,             /* number of arguments   */
                           (PRXSTRING)  &arg,          /* array of arguments    */
                           (PSZ)        "G:\\Projects_working\\mmclasses-0.3.0\\testfunc.cwr",/* name of REXX file     */
                           (PRXSTRING)  0,             /* No INSTORE used       */
                           (PSZ)        "CWRXX",         /* Command env. name     */
                           (LONG)       RXSUBROUTINE,  /* Code for how invoked  */
                           (PRXSYSEXIT) 0,             /* No EXITs on this call */
                           (PSHORT)     &rexxrc,       /* Rexx program output   */
                           (PRXSTRING)  &rexxretval ); /* Rexx program output   */

              sprintf(text,"rc: %d, function return code: %d, %s ", 
                      rc, (int) rexxrc, rexxretval.strptr);

              WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, text, "", 1234, MB_OK|MB_MOVEABLE);
              
              DosFreeMem(rexxretval.strptr);          /* Release storage       
                                                         given to us by REXX.  */
              
#endif

              //            WinQueryWindowPos(hwndNew,&swp);
              //    WinSetWindowPos(hwndNew, NULLHANDLE, 0, 0, swp.cx-30, swp.cy+10,SWP_SIZE);
          break;
          }
        default:
          break;
        }
      return (MRESULT) FALSE;
    default:
      break;
    }/* switch */
  
  return WinDefDlgProc( hwnd, msg, mp1, mp2);
}
예제 #28
0
파일: slider.cpp 프로젝트: TheMyths/Core
void UIIntSlider::drawContent() {

    float position = std::min(1.0f, ((*value) - min) / ((float)max-min));

    drawSlider(position);
}