Exemple #1
0
Rboolean newJavaGD_Open(NewDevDesc *dd, newJavaGDDesc *xd, const char *dsp, double w, double h)
{   
    if (initJavaGD(xd)) return FALSE;
    
    xd->fill = 0xffffffff; /* transparent, was R_RGB(255, 255, 255); */
    xd->col = R_RGB(0, 0, 0);
    xd->canvas = R_RGB(255, 255, 255);
    xd->windowWidth = w;
    xd->windowHeight = h;
    xd->holdlevel = 0;
        
    {
        JNIEnv *env = getJNIEnv();
        jmethodID mid;
        
        if(!env || !xd || !xd->talk) {
            gdWarning("gdOpen: env, xd or talk is null");
            return FALSE;
        }
        
        /* we're not using dsp atm! */
        mid = (*env)->GetMethodID(env, xd->talkClass, "gdOpen", "(DD)V");
        if (mid)
            (*env)->CallVoidMethod(env, xd->talk, mid, w, h);
        else {
            gdWarning("gdOpen: can't get mid");
			chkX(env);
            return FALSE;
        }
		chkX(env);
    }
    
    return TRUE;
}
Exemple #2
0
static Rboolean newJavaGDDeviceDriver(NewDevDesc *dd, char *display,
		double width, double height, int sizeUnit,
		double xpi, double ypi, int canvas,
		double pointsize, double gamma)
{
	newJavaGDDesc *xd;
	
#ifdef JGD_DEBUG
  printf("TD: newJavaGDDeviceDriver(\"%s\", %f, %f, %f)\n", disp_name, width, height, pointsize);
#endif
	
	// allocate new device description
	if (!(xd = (newJavaGDDesc*) calloc(1, sizeof(newJavaGDDesc)))) {
		return FALSE;
	}
	// from here on, if we need to bail out with "error", then we must also free(xd).
	if (!createJavaGD(xd)) {
		free(xd);
		return FALSE;
	}
	
	initJavaGD(xd, &width, &height, &sizeUnit, &xpi, &ypi);
	
	xd->fill = 0xffffffff; /* transparent */
	xd->col = R_RGB(0, 0, 0);
	xd->canvas = canvas;
	
	/* Font will load at first use. */
	if (pointsize < 6 || pointsize > 24) pointsize = 12;
	xd->fontface = -1;
	xd->fontsize = -1;
	xd->basefontface = 1;
	xd->basefontsize = pointsize;
	
	setNewJavaGDDeviceData((NewDevDesc*)(dd), xd,
			width, height, gamma);
	
	return TRUE;
}