Ejemplo n.º 1
0
static int config_geom(Stream_t *Stream, struct device *dev, 
		       struct device *orig_dev, int media,
		       struct bootsector *boot)
{
	if(check_geom(dev, media, boot))
		return 1;
	set_geom(boot,dev);
	return 0;
}
Ejemplo n.º 2
0
Archivo: skin.c Proyecto: Lenbok/dormin
static void skin_init (State *s, value vertexa_v, value normala_v,
                       value uva_v, value skin_v, value colors_v)
{
    char *p;
    GLsizei sizevn, sizev, sizeu, sizec;
    void *ptrs[COUNT];

    s->num_vertices = Wosize_val (vertexa_v) / (Double_wosize * 3);

    sizev = AL32 (3 * sizeof (GLfloat) * s->num_vertices);
    sizeu = 2 * sizeof (GLfloat) * s->num_vertices;
    sizec = 4 * s->num_vertices;

    sizevn = sizev * 2;

    p = simd_alloc (16, AL16 (sizevn) + s->num_vertices * sizeof (struct skin));
    s->skin = (struct skin *) (p + AL16 (sizevn));
    s->ptrs[0] = ptrs[V_IDX] = p;
    ptrs[N_IDX] = p + sizev;

    p = stat_alloc (sizec + sizeu);
    s->ptrs[1] = ptrs[UV_IDX] = p;
    ptrs[C_IDX] = p + sizeu;

    set_geom (s, ptrs, vertexa_v, normala_v, uva_v, skin_v, colors_v);

    if (use_vbo) {
        glGenBuffers (2, s->bufid);

        glBindBuffer (GL_ARRAY_BUFFER, s->bufid[0]);
        glBufferData (GL_ARRAY_BUFFER, sizevn, s->ptrs[0], GL_DYNAMIC_DRAW);

        glBindBuffer (GL_ARRAY_BUFFER, s->bufid[1]);
        glBufferData (GL_ARRAY_BUFFER, sizeu+sizec, s->ptrs[1], GL_STATIC_DRAW);

        glBindBuffer (GL_ARRAY_BUFFER, 0);
        stat_free (s->ptrs[1]);

        p = NULL;
        s->bufs[V_IDX] = p;
        s->bufs[N_IDX] = p + sizev;
        s->bufs[UV_IDX] = p;
        s->bufs[C_IDX] = p + sizeu;
    }
    else {
        p = simd_alloc (DSTAL, sizevn);
        s->bufs[V_IDX] = p;
        s->bufs[N_IDX] = p + sizev;
        s->bufs[UV_IDX] = ptrs[UV_IDX];
        s->bufs[C_IDX] = ptrs[C_IDX];

        memcpy (p, s->ptrs[0], sizevn);
    }
    s->num_vertices /= 1;
}
Ejemplo n.º 3
0
//===== Copy  =====//
Af& Af::operator=(const Af& iaf) //jrg - look at this...
{
  type = iaf.type;
  curve_loaded_flag = iaf.curve_loaded_flag;
  inverted_flag = iaf.inverted_flag;

  camber = iaf.camber;
  camber_loc = iaf.camber_loc;
  thickness = iaf.thickness;
  thickness_loc = iaf.thickness_loc;
  radius_le = iaf.radius_le;
  radius_te = iaf.radius_te;
  delta_y_le = iaf.delta_y_le;
  a = iaf.a;
  ideal_cl = iaf.ideal_cl;

  sixser = iaf.sixser;
  name = iaf.name;

  num_pnts = iaf.num_pnts;

  orig_af_thickness = iaf.orig_af_thickness;
  radius_le_correction_factor = iaf.radius_le_correction_factor;
  radius_te_correction_factor = iaf.radius_te_correction_factor;

  upper_curve = iaf.upper_curve;
  lower_curve = iaf.lower_curve;

  slat_flag = iaf.slat_flag;
  slat_shear_flag = iaf.slat_shear_flag;
  slat_chord = iaf.slat_chord;
  slat_angle = iaf.slat_angle;

  flap_flag = iaf.flap_flag;
  flap_shear_flag = iaf.flap_shear_flag;
  flap_chord = iaf.flap_chord;
  flap_angle = iaf.flap_angle;

	set_geom(geom_ptr );

	load_name(); 
	generate_airfoil();

	return *this; 
}
Ejemplo n.º 4
0
Stream_t *XdfOpen(struct device *dev, char *name,
		  int mode, char *errmsg, struct xdf_info *info)
{
	Xdf_t *This;
	off_t begin, end;
	struct bootsector *boot;
	int type;

	if(dev && (!SHOULD_USE_XDF(dev) || check_geom(dev, 0, 0)))
		return NULL;

	This = New(Xdf_t);
	if (!This)
		return NULL;

	This->Class = &XdfClass;
	This->sector_size = 512;
	This->stretch = 0;

	precmd(dev);
	This->fd = open(name, mode | dev->mode | O_EXCL | O_NDELAY);
	if(This->fd < 0) {
#ifdef HAVE_SNPRINTF
		snprintf(errmsg,199,"xdf floppy: open: \"%s\"", strerror(errno));
#else
		sprintf(errmsg,"xdf floppy: open: \"%s\"", strerror(errno));
#endif
		goto exit_0;
	}
	closeExec(This->fd);

	This->drive = GET_DRIVE(This->fd);
	if(This->drive < 0)
		goto exit_1;

	/* allocate buffer */
	This->buffer = (char *) malloc(96 * 512);
	if (!This->buffer)
		goto exit_1;

	This->current_track = -1;
	This->track_map = (TrackMap_t *)
		calloc(96, sizeof(TrackMap_t));
	if(!This->track_map)
		goto exit_2;

	/* lock the device on writes */
	if (lock_dev(This->fd, mode == O_RDWR, dev)) {
#ifdef HAVE_SNPRINTF
		snprintf(errmsg,199,"xdf floppy: device \"%s\" busy:", 
			dev->name);
#else
		sprintf(errmsg,"xdf floppy: device \"%s\" busy:", 
			dev->name);
#endif
		goto exit_3;
	}

	/* Before reading the boot sector, assume dummy values suitable
	 * for reading at least the boot sector */
	This->track_size = 11;
	This->track0_size = 6;
	This->rate = 0;
	This->FatSize = 9;
	This->RootDirSize = 1;
	decompose(This, 0, 512, &begin, &end, 0);
	if (load_data(This, 0, 1, 1) < 0 ) {
		This->rate = 0x43;
		if(load_data(This, 0, 1, 1) < 0)
			goto exit_3;
	}

	boot = (struct bootsector *) This->buffer;
	This->FatSize = WORD(fatlen);
	This->RootDirSize = WORD(dirents)/16;
	This->track_size = WORD(nsect);
	for(type=0; type < NUMBER(xdf_table); type++) {
		if(xdf_table[type].track_size == This->track_size) {
			This->map = xdf_table[type].map;
			This->track0_size = xdf_table[type].track0_size;
			This->rootskip = xdf_table[type].rootskip;
			break;
		}
	}
	if(type == NUMBER(xdf_table))
		goto exit_3;

	if(info) {
		info->RootDirSize = This->RootDirSize;
		info->FatSize = This->FatSize;
		info->BadSectors = 5;
	}
	decompose(This, 0, 512, &begin, &end, 1);

	This->refs = 1;
	This->Next = 0;
	This->Buffer = 0;
	if(dev)
		set_geom(boot, dev);
	return (Stream_t *) This;

exit_3:
	Free(This->track_map);
exit_2:
	Free(This->buffer);
exit_1:
	close(This->fd);
exit_0:
	Free(This);
	return NULL;
}