/* int crearTarea(char *programa){ */ int crearTarea(char *programa, int prioridad) { void * imagen, *pc_inicial; int error=0; int numProceso; TipoBCP *proceso; numProceso=buscarBCPLibreTablaProcesos(); if (numProceso==-1) { return -1; /* no hay entrada libre */ } /* A rellenar el BCP ... */ proceso=&(tablaProcesos[numProceso]); /* crea la imagen de memoria leyendo ejecutable */ imagen=crear_imagen(programa, &pc_inicial); if (imagen) { /* asignar imagen de memoria */ proceso->infoMemoria=imagen; proceso->pila=crear_pila(TAM_PILA); /* crear estado inicial de los registros del procesador */ fijar_contexto_ini(proceso->infoMemoria, proceso->pila, TAM_PILA, pc_inicial, &(proceso->contextoRegs)); /*copiar tabla de descriptores de ficheros del padre */ inicializarTablaDescFicheros(proceso->tablaDescFicheros); if (NULL != procesoActual) { memcpy(proceso->tablaDescFicheros, procesoActual->tablaDescFicheros, MAX_TABLA_DESCFICHEROS * sizeof(TipoDescFichero) ); } /* asignar el identificador de proceso */ proceso->id=numProceso; /* asignar el estado inicial a LISTO */ proceso->estado=LISTO; /* asignar la prioridad */ proceso->prioridad=prioridad; /* lo inserta al final de la lista corresponiente */ insertarConPrioridad(proceso); error= 0; } else { error= -1; /* fallo al crear imagen */ } return error; }
void imageProcessing(char* imageName, int contador) { int i, j; //Variables auxiliares para loops BMP img; //Estructura de tipo imágen unsigned char pixel; //Pixel char IMAGEN[45]; char IMAGEN_TRATADA[45]; strcpy(IMAGEN, imageName); sprintf(IMAGEN_TRATADA, "imTratada_%d.bmp", contador); //***************************************************************************************************************** //Abrir la imágen BMP de 24 bits, almacenar su cabecera en img y colocar sus pixeles en el arreglo img.pixel[][] //***************************************************************************************************************** abrir_imagen(&img, IMAGEN); printf("\n*************************************************************************"); printf("\nIMAGEN: %s", IMAGEN); printf("\n*************************************************************************"); printf("\nDimensiones de la imágen:\tAlto=%d\tAncho=%d\n", img.alto, img.ancho); //*********************************************************************************** //Tratamiento de los pixeles //*********************************************************************************** //Ejemplo donde se entercambia el plano Rojo con el Azul de la mitad de la imagen for (i = 0; i < img.alto; i++) for (j = 0; j < img.ancho; j++) { pixel = img.pixelR[i][j]; img.pixelR[i][j] = img.pixelB[i][j]; img.pixelB[i][j] = img.pixelG[i][j]; img.pixelG[i][j] = pixel; } //***************************************************************** //1 Crear la imágen BMP a partir del arreglo img.pixel[][] //***************************************************************** crear_imagen(&img, IMAGEN_TRATADA); printf("\nImágen BMP tratada en el archivo: %s\n", IMAGEN_TRATADA); //Terminar programa normalmente }