FPG Editor v 4.0

Started by DCelso, September 14, 2012, 11:08:22 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Bueno ahora estoy usando el metodo similar al tuyo, de ir rellenando el bitmap.

De momento obtengo resultados similares con imagenes mal formadas pero identificables, tambien parece que he corregido el color, para tu info ahora lo hago así (de momento sólo fpg de 16 bits), en el case 2:
case 2:
s =
newbyte[width * bytes_per_pixel];
Array.Copy(Buffer, 0, s, 0, width * bytes_per_pixel);
byte_line = s;
for (j = 0; j < width; j++)
{
if (is_cdiv)
{
uColor16bits.Calculate_RGB(byte_line[j * 2 + 1], byte_line[j * 2], ref p_bytearray[j * 4], ref p_bytearray[(j * 4) + 1], ref p_bytearray[(j * 4) + 2]);
p_bytearray[(j * 4) + 3] = 255;

if (((p_bytearray[j * 4] == 0xF8) && (p_bytearray[j * 4 + 1] == 0) && (p_bytearray[j * 4 + 2] == 0xF8)))
p_bytearray[(j * 4) + 3] = 0;
}
else

{
uColor16bits.Calculate_BGR(byte_line[j * 2 + 1], byte_line[j * 2], ref p_bytearray[j * 4], ref p_bytearray[(j * 4) + 1], ref p_bytearray[(j * 4) + 2]);
p_bytearray[(j * 4) + 3] = 255;
// Alpha value

if ((byte_line[j * 2 + 1] + byte_line[j * 2]) == 0)
p_bytearray[(j * 4) + 3] = 0;
// Alpha value

}
try
{

//result.SetPixel(j, k, Color.Blue);


result.SetPixel(j, k, Color.FromArgb((int)(p_bytearray[((lineStart + j) * 4) + 3]), // Alpa

(int)(p_bytearray[((lineStart + j) * 4 + 1)]), // Red

(int)(p_bytearray[((lineStart + j) * 4)]), // Green

(int)(p_bytearray[((lineStart + j) * 4) + 2]))); // Blue

}
catch(Exception ex)
{
//messagebox.show(ex.Message); }
}
break;
case 3: ...

Me parece que ya sólo faltaria obtener el valor correcto para cada interaccion (cambio de linea) de la variable lineStart, porque tu usas esto:

p_bytearray := lazBMP.GetDataLineStart(k);

y no entiendo exactamente que hace, pienso que tambien desloca la posicion del array en cambio de linea, necesito que me expliques esto y que valores/dimensión tiene p_bytearray en cada asignación de esas en el for.

gracias.


DCelso

Ok. Pinta bien. Como recomendaciin te sugiero que priebes primero a cargar imahenes de 24 o 32 bits. Son mas faciles de manejar y entender la logica. Ya luego te pasas a las demas. Que llevan tratamiento adicionak a cada pixel.

Get data line start hace lo que si nombe dice. Y ya te respondi. Devuelve el inicio de la linea k dentro del buffer de datos.
Por lo que en cada iteracion puedes leer width*bytedepth.
Es decir recorre la dimension height.
En mi caso tbitmap es pf32bit. Que crea un array de datos bgra. Por lo que nyte deoth es 4 siempre. Por lo tanto el array de datos del bitmap se lee de 4 en 4 bytes.
Ahora bien el array de datos del fpg depende del tipo de fpg leido. Por eso esta el swith casr.
En el mismo for y usando mod. En el caso de 24 bits consigo poder accerder al buffer de tbitmap saltando de 4 en 4 y al buffer del fpg saltando de 3 en 3
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

oye, por cierto estas abriendo bien los ficheros cdiv de 16bits creados antes ? a mi me sale FPG_type = FPG_NULL

DCelso

Si. Perfectamente. Son de 16 bits bgr(al reves que fenix) donde el color transapente es wl pink. 248.0.248.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

Nueva versión para descargar, r27, corregido un error en la exportación de maps.

No creo que alguien use este formato hoy en día, pero me encontré el error y lo corregí :D.

http://code.google.com/p/fpg-editor/downloads/detail?name=fpg-editor_r27_win32.7z&can=2&q=#makechanges
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

nueva versión r29
http://code.google.com/p/fpg-editor/downloads/detail?name=fpg-editor_r29_win32.7z&can=2&q=#makechanges

Recorregido error en exportación y lectura de maps :D,

Corregidas varias cosas en el manejo de puntos de control.

Ahora al remplazar una imagen, no elimina los puntos de control de la imagen anterior. (por lo que puedes sacar la imagen retocarla y volverla a insertar respetando los puntos de control)

Si insertas un map, también copia los puntos de control.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

release 30, para linux.
ningún cambio que afecte a nada con respecto a la 29 solo que es para linux y algún cambio de nombre de variable.

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

DCelso

versión r32 disponible para linux.
ahora por defecto crea un fpg de 32 bits, puedes cambiar su formato a otro dinámicamente desde la barra de estado.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Abash

Me e bajado la versión 3.1 que tienes un poco mas arriba de este post, que creo que es el ultimo.
Me da error al abrir cualquier fpg.
La ventanita dice:

Failed to get raw image description from bitmap.
Press OK to ignore and risk data corruption.
Press Cancel to kill the program.

Al darle a OK el programa no cae, pero no abre absolutamente nada.
Por si acaso, e probado a meterlo en la misma carpeta donde tengo el 3.0, pero me hace lo mismo.
La versión 3.0 me va bien.

DCelso

La de windows?. Dime r27 o que r.
Entra en la pagina de codegoogle y en la seccion de downloads. Tienes las ultimad descargas
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Abash

#220
Windows r29, me la e bajado otra vez por si acaso, pero me hace lo mismo. Me da error al abrir fpg´s de 16 bits. En principio pensaba que era error de mi fpg, pero al intentar abrir los fpg´s de 16 bits que hay en los ejemplos medios del pack, ya e visto que no me abren. Y por si acaso repito que con otra versión mas vieja que tengo del programa si que se puede.

DCelso

 :o, que raro. A mi me abren.
Que version de windows tienes. Vista 32 bits?
Voy a recompilar la 32 a ver si va en esta ultima.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Abash

Windows 7  64bits 8 Gigas de ram

DCelso

Gracias por el aviso, abash,
encontré el problema, no estaba comprobando bien si estaban comprimidos los fpgs.
Ya lo solucioné.
Subo la versión
Pruebala
http://code.google.com/p/fpg-editor/downloads/detail?name=fpg-editor_r33_win32.7z&can=2&q=#makechanges
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Abash

#224
Edito mi respuesta, ya que ahora hace algo raro.
Si ejecuto el programa y abro un fpg, lo abre sin problemas. Con fpg aclaro que digo los que antes no podia.
Pero...
Si abro los fpg haciendo clic derecho y abrir con...
Me sale una ventanita que dice:
El fichero (.FNT) no es un formato valido.
Desde luego que no es un archivo FNT lo que quiero abrir, eso por descontado. No se porque lo pone la ventana.
Pulso Aceptar y arranca el programa con otra ventana de error.
Invalid pointer operation.
Pulso OK y arranca, pero no abre nada.