mirror of
https://github.com/jfdelnero/HxCFloppyEmulator.git
synced 2026-07-28 04:06:36 +00:00
178 lines
4.4 KiB
C++
178 lines
4.4 KiB
C++
/*
|
|
//
|
|
// Copyright (C) 2006-2026 Jean-François DEL NERO
|
|
//
|
|
// This file is part of HxCFloppyEmulator.
|
|
//
|
|
// HxCFloppyEmulator may be used and distributed without restriction provided
|
|
// that this copyright statement is not removed from the file and that any
|
|
// derivative work contains the original copyright notice and the associated
|
|
// disclaimer.
|
|
//
|
|
// HxCFloppyEmulator is free software; you can redistribute it
|
|
// and/or modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
//
|
|
// HxCFloppyEmulator is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
// See the GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with HxCFloppyEmulator; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
//
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
//-------------------------------------------------------------------------------//
|
|
//-------------------------------------------------------------------------------//
|
|
//-----------H----H--X----X-----CCCCC----22222----0000-----0000------11----------//
|
|
//----------H----H----X-X-----C--------------2---0----0---0----0--1--1-----------//
|
|
//---------HHHHHH-----X------C----------22222---0----0---0----0-----1------------//
|
|
//--------H----H----X--X----C----------2-------0----0---0----0-----1-------------//
|
|
//-------H----H---X-----X---CCCCC-----222222----0000-----0000----1111------------//
|
|
//-------------------------------------------------------------------------------//
|
|
//----------------------------------------------------- http://hxc2001.free.fr --//
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
// File : utils.cxx
|
|
// Contains: miscellaneous stuffs
|
|
//
|
|
// Written by: Jean-François DEL NERO
|
|
//
|
|
// Change History (most recent first):
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "utils.h"
|
|
|
|
char * URIfilepathparser(char * URI,int size)
|
|
{
|
|
char * path,c;
|
|
int i,j;
|
|
|
|
if(URI)
|
|
{
|
|
if(!strncmp(URI,"file://",7))
|
|
{
|
|
path = (char*)malloc(size + 1);
|
|
if(path)
|
|
{
|
|
memset(path,0,size + 1);
|
|
i=7;
|
|
j=0;
|
|
while(URI[i] && i < size)
|
|
{
|
|
if(URI[i] == '%')
|
|
{
|
|
if( URI[i + 1] && URI[i +2] )
|
|
{
|
|
c = URI[i + 1];
|
|
if(c >= '0' && c<='9')
|
|
{
|
|
c = c - '0';
|
|
}
|
|
else
|
|
{
|
|
if(c >= 'a' && c<='f')
|
|
{
|
|
c = (c - 'a') + 10;
|
|
}
|
|
else
|
|
{
|
|
c = (c - 'A') + 10;
|
|
}
|
|
}
|
|
|
|
path[j] = ( c * 0x10 );
|
|
|
|
c = URI[i + 2];
|
|
if(c >= '0' && c<='9')
|
|
{
|
|
c = c - '0';
|
|
}
|
|
else
|
|
{
|
|
if(c >= 'a' && c<='f')
|
|
{
|
|
c = (c - 'a') + 10;
|
|
}
|
|
else
|
|
{
|
|
c = (c - 'A') + 10;
|
|
}
|
|
|
|
}
|
|
|
|
path[j] = path[j] | ( c * 0x1 );
|
|
|
|
j++;
|
|
i = i + 3;
|
|
}
|
|
else
|
|
{
|
|
i++;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
path[j] = URI[i];
|
|
j++;
|
|
i++;
|
|
}
|
|
|
|
path[j] = 0;
|
|
}
|
|
}
|
|
|
|
return path;
|
|
}
|
|
else
|
|
{
|
|
path = 0;
|
|
if(size)
|
|
{
|
|
path = (char*)malloc( size + 1);
|
|
if(path)
|
|
{
|
|
memset(path,0,size + 1);
|
|
strncpy(path,URI,size);
|
|
}
|
|
}
|
|
return path;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return URI;
|
|
}
|
|
}
|
|
|
|
void splash_sprite(bmaptype * bmp,unsigned char * dest_buffer, int xsize, int ysize, int xpos, int ypos)
|
|
{
|
|
int i,j;
|
|
int offset;
|
|
int src_offset;
|
|
|
|
for(j=0;j<bmp->Ysize;j++)
|
|
{
|
|
for(i=0;i<bmp->Xsize;i++)
|
|
{
|
|
if( ( (xpos + i) >=0 && (xpos + i) < xsize) &&
|
|
( (ypos + j) >=0 && (ypos + j) < ysize) )
|
|
{
|
|
offset = (((ypos + j) * xsize) + (xpos + i)) * 3;
|
|
src_offset = ((j * bmp->Xsize) + i) * 3;
|
|
|
|
dest_buffer[offset + 0] = bmp->unpacked_data[src_offset + 0];
|
|
dest_buffer[offset + 1] = bmp->unpacked_data[src_offset + 1];
|
|
dest_buffer[offset + 2] = bmp->unpacked_data[src_offset + 2];
|
|
}
|
|
}
|
|
}
|
|
}
|