Пример #1
0
	/*
	* Draws a solid sphere
	*/
	void DrawSolidSphere(GLdouble radius, GLint slices, GLint stacks, const Vector3& position, const Vector3 color )
	{
		CommonGLDisables();

		// PUSH
		//
		glPushMatrix();

		glColor3f( color.x, color.y, color.z ); // Setting the color
		glTranslatef( position.x, position.y, position.z );
		glScalef( 0.1f, 0.1f, 0.1f ); // TODO: Add this as a function param

		int i,j;

		/* Adjust z and radius as stacks are drawn. */

		double z0,z1;
		double r0,r1;

		/* Pre-computed circle */

		double *sint1,*cost1;
		double *sint2,*cost2;
		circleTable(&sint1,&cost1,-slices);
		circleTable(&sint2,&cost2,stacks*2);

		/* The top stack is covered with a triangle fan */

		z0 = 1.0;
		z1 = cost2[1];
		r0 = 0.0;
		r1 = sint2[1];

		glBegin(GL_TRIANGLE_FAN);

		glNormal3d(0,0,1);
		glVertex3d(0,0,radius);

		for (j=slices; j>=0; j--)
		{       
			glNormal3d(cost1[j]*r1,        sint1[j]*r1,        z1       );
			glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
		}

		glEnd();

		/* Cover each stack with a quad strip, except the top and bottom stacks */

		for( i=1; i<stacks-1; i++ )
		{
			z0 = z1; z1 = cost2[i+1];
			r0 = r1; r1 = sint2[i+1];

			glBegin(GL_QUAD_STRIP);

			for(j=0; j<=slices; j++)
			{
				glNormal3d(cost1[j]*r1,        sint1[j]*r1,        z1       );
				glVertex3d(cost1[j]*r1*radius, sint1[j]*r1*radius, z1*radius);
				glNormal3d(cost1[j]*r0,        sint1[j]*r0,        z0       );
				glVertex3d(cost1[j]*r0*radius, sint1[j]*r0*radius, z0*radius);
			}

			glEnd();
		}

		/* The bottom stack is covered with a triangle fan */

		z0 = z1;
		r0 = r1;

		glBegin(GL_TRIANGLE_FAN);

		glNormal3d(0,0,-1);
		glVertex3d(0,0,-radius);

		for (j=0; j<=slices; j++)
		{
			glNormal3d(cost1[j]*r0,        sint1[j]*r0,        z0       );
			glVertex3d(cost1[j]*r0*radius, sint1[j]*r0*radius, z0*radius);
		}

		glEnd();

		/* Release sin and cos tables */

		free(sint1);
		free(cost1);
		free(sint2);
		free(cost2);

		// POP
		//
		glPopMatrix();

		CommonGLEnables();
		ResetColor();
	}
Пример #2
0
void Log::outCommand(uint32 account, const char * str, ...)
{
    if (!str)
        return;

    // TODO: support accountid
    if (m_enableLogDB && m_dbGM)
    {
        va_list ap2;
        va_start(ap2, str);
        char nnew_str[MAX_QUERY_LEN];
        vsnprintf(nnew_str, MAX_QUERY_LEN, str, ap2);
        outDB(LOG_TYPE_GM, nnew_str);
        va_end(ap2);
    }

    if (m_logLevel > LOGL_NORMAL)
    {
        if (m_colored)
            SetColor(true, m_colors[LOGL_BASIC]);

        va_list ap;
        va_start(ap, str);
        vutf8printf(stdout, str, &ap);
        va_end(ap);

        if (m_colored)
            ResetColor(true);

        printf("\n");

        if (logfile)
        {
            outTimestamp(logfile);
            va_list ap;
            va_start(ap, str);
            vfprintf(logfile, str, ap);
            fprintf(logfile, "\n" );
            va_end(ap);
            fflush(logfile);
        }
    }

    if (m_gmlog_per_account)
    {
        if (FILE* per_file = openGmlogPerAccount (account))
        {
            outTimestamp(per_file);
            va_list ap;
            va_start(ap, str);
            vfprintf(per_file, str, ap);
            fprintf(per_file, "\n" );
            va_end(ap);
            fclose(per_file);
        }
    }
    else if (gmLogfile)
    {
        outTimestamp(gmLogfile);
        va_list ap;
        va_start(ap, str);
        vfprintf(gmLogfile, str, ap);
        fprintf(gmLogfile, "\n" );
        va_end(ap);
        fflush(gmLogfile);
    }

    fflush(stdout);
}
Пример #3
0
void Log::outCommand( uint32 account, const char * str, ... )
{
    if (!str)
        return;

    if (m_logLevel >= LOG_LVL_DETAIL)
    {
        if (m_colored)
            SetColor(true,m_colors[LogDetails]);

        if (m_includeTime)
            outTime();

        va_list ap;
        va_start(ap, str);
        vutf8printf(stdout, str, &ap);
        va_end(ap);

        if (m_colored)
            ResetColor(true);

        printf( "\n" );
    }

    if (logfile && m_logFileLevel >= LOG_LVL_DETAIL)
    {
        va_list ap;
        outTimestamp(logfile);
        va_start(ap, str);
        vfprintf(logfile, str, ap);
        fprintf(logfile, "\n" );
        va_end(ap);
        fflush(logfile);
    }

    if (m_gmlog_per_account)
    {
        if (FILE* per_file = openGmlogPerAccount (account))
        {
            va_list ap;
            outTimestamp(per_file);
            va_start(ap, str);
            vfprintf(per_file, str, ap);
            fprintf(per_file, "\n" );
            va_end(ap);
            fclose(per_file);
        }
    }
    else if (gmLogfile)
    {
        va_list ap;
        outTimestamp(gmLogfile);
        va_start(ap, str);
        vfprintf(gmLogfile, str, ap);
        fprintf(gmLogfile, "\n" );
        va_end(ap);
        fflush(gmLogfile);
    }

    fflush(stdout);
}
void CSettingsRevisionGraphColors::OnBnClickedRestore()
{
    ResetColor (m_cAddedNode, CColors::gdpAddedNode);
    ResetColor (m_cDeletedNode, CColors::gdpDeletedNode);
    ResetColor (m_cRenamedNode, CColors::gdpRenamedNode);
    ResetColor (m_cModifiedNode, CColors::gdpModifiedNode);
    ResetColor (m_cUnchangedNode, CColors::gdpUnchangedNode);
    ResetColor (m_cLastCommitNode, CColors::gdpLastCommitNode);
    ResetColor (m_cWCNode, CColors::gdpWCNode);
    ResetColor (m_cWCNodeBorder, CColors::gdpWCNodeBorder);

    ResetColor (m_cTagOverlay, CColors::gdpTagOverlay);
    ResetColor (m_cTrunkOverlay, CColors::gdpTrunkOverlay);

    ResetColor (m_cTagMarker, CColors::ctMarkers, 0);
    ResetColor (m_cTrunkMarker, CColors::ctMarkers, 1);

    ResetColor (m_cStripeColor1, CColors::gdpStripeColor1);
    ResetColor (m_cStripeColor2, CColors::gdpStripeColor2);

    m_sStripeAlpha1 = m_Colors.GetColor (CColors::gdpStripeColor1, true).GetA();
    m_sStripeAlpha2 = m_Colors.GetColor (CColors::gdpStripeColor2, true).GetA();

    UpdateData (FALSE);

    SetModified(TRUE);
}