void GUIController::OnRenderBoard()

in GomokuClient/GomokuClient/GUIController.cpp [158:232]


void GUIController::OnRenderBoard()
{
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();

    glColor3f(0.4f, 0.3f, 0.2f);
    glBegin(GL_POLYGON);
    glVertex2f(GRID_GAP / 4, GRID_GAP / 4);
    glVertex2f(WINDOW_SIZE_W - GRID_GAP / 4, GRID_GAP / 4);
    glVertex2f(WINDOW_SIZE_W - GRID_GAP / 4, WINDOW_SIZE_H - GRID_GAP / 4);
    glVertex2f(GRID_GAP / 4, WINDOW_SIZE_H - GRID_GAP / 4);
    glEnd();

    glColor3f(0, 0, 0);
    glLineWidth(3);
    glBegin(GL_LINE_LOOP);
    glVertex2f(GRID_GAP, GRID_GAP);
    glVertex2f(WINDOW_SIZE_W - GRID_GAP, GRID_GAP);
    glVertex2f(WINDOW_SIZE_W - GRID_GAP, WINDOW_SIZE_H - GRID_GAP);
    glVertex2f(GRID_GAP, WINDOW_SIZE_H - GRID_GAP);
    glEnd();

    for (int x = 0; x <= WINDOW_SIZE_W; x += GRID_GAP)
    {
        glBegin(GL_LINES);
        glVertex2f(x + GRID_GAP, GRID_GAP);
        glVertex2f(x + GRID_GAP, WINDOW_SIZE_H - GRID_GAP);
        glEnd();
    }

    for (int y = 0; y <= WINDOW_SIZE_H; y += GRID_GAP)
    {
        glBegin(GL_LINES);
        glVertex2f(GRID_GAP, y + GRID_GAP);
        glVertex2f(WINDOW_SIZE_W - GRID_GAP, y + GRID_GAP);
        glEnd();
    }

    for (int x = 1; x <= BOARD_SIZE; ++x)
    {
        for (int y = 1; y <= BOARD_SIZE; ++y)
        {
            if (mViewMatrix[x][y] == StoneType::STONE_NONE)
                continue;
            if (mViewMatrix[x][y] == StoneType::STONE_BLACK)
                glColor3f(0, 0, 0);
            else
                glColor3f(1, 1, 1);

            glPushMatrix();
            glBegin(GL_TRIANGLE_FAN);

            for (int i = 0; i < 360; i++)
            {
                const float DEG2RAD = 3.14159f / 180;
                float degInRad = i*DEG2RAD;
                glVertex2f(cos(degInRad)*STONE_RADIUS + (x * GRID_GAP), sin(degInRad)*STONE_RADIUS + (y * GRID_GAP));
            }
            glEnd();
            glPopMatrix();
        }
    }

    /// draw a textline
    glColor3f(1, 1, 0);
    glRasterPos2f(GRID_GAP / 3, GRID_GAP / 3);

    for (int i = 0; i < strlen(mTextLine); ++i)
    {
        glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, mTextLine[i]);
    }

    glutSwapBuffers();
}