コード例 #1
0
ファイル: GradientsView.cpp プロジェクト: mmanley/Antares
void
GradientsView::Draw(BRect update)
{
	switch (fType) {
		case BGradient::TYPE_LINEAR:
			DrawLinear(update);
			break;
		
		case BGradient::TYPE_RADIAL:
			DrawRadial(update);
			break;
		
		case BGradient::TYPE_RADIAL_FOCUS:
			DrawRadialFocus(update);
			break;
		
		case BGradient::TYPE_DIAMOND:
			DrawDiamond(update);
			break;

		case BGradient::TYPE_CONIC:
			DrawConic(update);
			break;

		case BGradient::TYPE_NONE:
		default:
			break;
	}
}
コード例 #2
0
		void  CSimpleMarketSymbol::DrawGeometryEx(IDisplay* pDisplay, const GPoint* points, const int* polyCounts, size_t polyCount)
		{
			for(size_t part = 0, offset = 0; part < polyCount; part++)
			{
				for(int point = (int)offset; point < (int)offset + polyCounts[part]; point++)
				{
					switch(m_style)
					{
					case SimpleMarkerStyleCircle:
						DrawCircle(points[point], pDisplay->GetGraphics().get());
						break;
					case SimpleMarkerStyleSquare:
						DrawSquare(points[point], pDisplay->GetGraphics().get());
						break;
					case SimpleMarkerStyleCross:
						DrawCross(points[point], pDisplay->GetGraphics().get());
						break;
					case SimpleMarkerStyleX:
						DrawX(points[point], pDisplay->GetGraphics().get());
						break;
					case SimpleMarkerStyleDiamond:
						DrawDiamond(points[point], pDisplay->GetGraphics().get());
						break;
					}
				}
				offset += polyCounts[part];
			}
		}
コード例 #3
0
ファイル: view_mensural.cpp プロジェクト: DDMAL/verovio
void View::DrawMensuralNote(DeviceContext *dc, LayerElement *element, Layer *layer, Staff *staff, Measure *measure)
{
    assert(dc);
    assert(element);
    assert(layer);
    assert(staff);
    assert(measure);

    Note *note = dynamic_cast<Note *>(element);
    assert(note);

    int noteY = element->GetDrawingY();
    int xNote, xStem;
    int drawingDur;
    int staffY = staff->GetDrawingY();
    wchar_t charCode;
    int verticalCenter = 0;
    bool mensural_black = (staff->m_drawingNotationType == NOTATIONTYPE_mensural_black);

    xStem = element->GetDrawingX();

    drawingDur = note->GetDrawingDur();

    int radius = m_doc->GetGlyphWidth(SMUFL_E93C_mensuralNoteheadMinimaWhite, staff->m_drawingStaffSize, false) / 2;

    if (drawingDur > DUR_1) {
        if (mensural_black) radius *= TEMP_MINIMA_WIDTH_FACTOR;
    }
    else {
        radius += radius / 3;
    }

    /************** Stem/notehead direction: **************/

    data_STEMDIRECTION stemDir = STEMDIRECTION_NONE;

    verticalCenter = staffY - m_doc->GetDrawingDoubleUnit(staff->m_drawingStaffSize) * 2;
    if (note->HasStemDir()) {
        stemDir = note->GetStemDir();
    }
    else if (layer->GetDrawingStemDir() != STEMDIRECTION_NONE) {
        stemDir = layer->GetDrawingStemDir();
    }
    else {
        if (drawingDur < DUR_1)
            stemDir = STEMDIRECTION_down;
        else
            stemDir = (noteY > verticalCenter) ? STEMDIRECTION_down : STEMDIRECTION_up;
    }

    xNote = xStem - radius;

    /************** Noteheads: **************/

    // Ligature, maxima,longa, and brevis
    if ((note->GetLig() != noteLogMensural_LIG_NONE) && (drawingDur <= DUR_1)) {
        DrawLigatureNote(dc, element, layer, staff);
    }
    else if (drawingDur < DUR_1) {
        DrawMaximaToBrevis(dc, noteY, element, layer, staff);
    }
    // Semibrevis
    else if (drawingDur == DUR_1) {
        if (mensural_black) {
            int sbStaffSize = 0.8 * staff->m_drawingStaffSize;
            DrawDiamond(dc, xNote, noteY, 2 * sbStaffSize, (int)(1.2 * sbStaffSize), !note->GetColored(), 20);
        }
        else {
            // Maybe we can add this to Note::GetMensuralSmuflNoteHead?
            if (note->GetColored())
                charCode = SMUFL_E938_mensuralNoteheadSemibrevisBlack;
            else
                charCode = SMUFL_E939_mensuralNoteheadSemibrevisVoid;

            DrawSmuflCode(dc, xNote, noteY, charCode, staff->m_drawingStaffSize, false);
        }
    }
    // Shorter values
    else {
        if (mensural_black) {
            // SMuFL 1.20 doesn't have a codepoint for the "colored" semibrevis and minima head in black
            // mensural notation. But an unfilled (void) narrow diamond is fine, so we draw one.
            int sbStaffSize = 0.8 * staff->m_drawingStaffSize;
            DrawDiamond(dc, xNote, noteY, 2 * sbStaffSize, (int)(TEMP_MINIMA_WIDTH_FACTOR * 2 * sbStaffSize),
                !note->GetColored(), 20);
        }
        else {
            DrawSmuflCode(dc, xNote, noteY, note->GetMensuralSmuflNoteHead(), staff->m_drawingStaffSize, false);
        }

        DrawMensuralStem(dc, note, staff, stemDir, radius, xStem, noteY);
    }
    
    /************ Draw children (verse / syl) ************/
    
    DrawLayerChildren(dc, note, layer, staff, measure);
    
}