コード例 #1
0
ファイル: color.c プロジェクト: antrik/libggi
int GGI_quartz_setgamma(struct ggi_visual *vis,double r,double g,double b)
{
	ggi_quartz_priv *priv;
	const CGGammaValue min = 0.0f, max = 1.0f;

	priv = QUARTZ_PRIV(vis);

	if (r == 0.0) {
		r = FLT_MAX;
	} else {
		r = 1.0f / r;
	}	/* if */

	if (g == 0.0) {
		g = FLT_MAX;
	} else {
		g = 1.0 / g;
	}	/* if */

	if (b == 0.0) {
		b = FLT_MAX;
	} else {
		b  = 1.0 / b;
	}	/* if */


	if ( CGDisplayNoErr == CGSetDisplayTransferByFormula
		(priv->display_id, min, max, (CGGammaValue)r,
		min, max, (CGGammaValue)g, min, max, (CGGammaValue)b) )
	{
		return 0;
	} else {
		return -1;
	}	/* if */
}	/* GGI_quartz_setgamma */
コード例 #2
0
BOOL LLWindowMacOSX::setGamma(const F32 gamma)
{
	CGGammaValue redMin;
	CGGammaValue redMax;
	CGGammaValue redGamma;
	CGGammaValue greenMin;
	CGGammaValue greenMax;
	CGGammaValue greenGamma;
	CGGammaValue blueMin;
	CGGammaValue blueMax;
	CGGammaValue blueGamma;

	// MBW -- XXX -- Should we allow this in windowed mode?

	if(CGGetDisplayTransferByFormula(
		mDisplay,
		&redMin,
		&redMax,
		&redGamma,
		&greenMin,
		&greenMax,
		&greenGamma,
		&blueMin,
		&blueMax,
		&blueGamma) != noErr)
	{
		return false;
	}

	if(CGSetDisplayTransferByFormula(
		mDisplay,
		redMin,
		redMax,
		gamma,
		greenMin,
		greenMax,
		gamma,
		blueMin,
		blueMax,
		gamma) != noErr)
	{
		return false;
	}


	return true;
}
コード例 #3
0
ファイル: main.c プロジェクト: cyphunk/NetworkGamma
int main (int argc, const char * argv[]) {
	CGError err;		
	CGGammaValue redMin, redMax, redGamma,
	greenMin, greenMax, greenGamma,
	blueMin, blueMax, blueGamma;
	
	printf("setting up connection on UDP port 4740\n");
	printf("server accepts 3 values of 0 to 127 that\n");
	printf("are applied to the screen.\n");
	
	// Current Gamma settings:
	err = CGGetDisplayTransferByFormula (0,
										 &redMin, &redMax, &redGamma,
										 &greenMin, &greenMax, &greenGamma,
										 &blueMin, &blueMax, &blueGamma);
	
	(void) signal(SIGINT, sigcatch);

	// Setup network:
	int port = 4740;
	sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
	if ( sock <= 0 ) {
		printf( "failed to create socket\n" );
		return false;
	}
	sockaddr_in address;
	memset(&address, 0, sizeof(address));		
	address.sin_family = AF_INET;
	address.sin_addr.s_addr = INADDR_ANY;
	address.sin_port = htons( (unsigned short) port );
	if ( bind( sock, (const struct sockaddr *)&address, sizeof(sockaddr_in) ) < 0 ) {
		printf( "failed to bind socket\n" );
		return false;
	}

	// just for the hell of it
	CGDisplayForceToGray(true);
	
	while ( true ) // wait for packet
	{
		sockaddr_in from;
		socklen_t fromLength = sizeof( from );		
		gammaFractions gammaPacket;
		// process received packet
		int rxbytes=recvfrom(sock,(char*)&gammaPacket, sizeof(gammaPacket),0,(const struct sockaddr*)&from,&fromLength);
		if ( rxbytes <= 0 )
			continue;
		
		//unsigned int from_address = ntohl( from.sin_addr.s_addr );
		//unsigned int from_port = ntohs( from.sin_port );

		printf("recieved packet, bytes: %d\n", rxbytes);
		printf("red: %x, green: %x, blue: %x\n", gammaPacket.red, gammaPacket.green, gammaPacket.blue);
		err = CGSetDisplayTransferByFormula (0,
											 redMin,   ((1.0/127)*gammaPacket.red  )*redMax,   redGamma,
											 greenMin, ((1.0/127)*gammaPacket.green)*greenMax, greenGamma,
											 blueMin,  ((1.0/127)*gammaPacket.blue )*blueMax,  blueGamma);		
	}

    return 0;
}