mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-01-27 04:42:56 +03:00
[project @ 2004-03-28 14:33:52 by jmb]
Create iconsprite for save complete. svn path=/import/netsurf/; revision=686
This commit is contained in:
parent
c75b1473be
commit
9c4dad6b63
@ -15,11 +15,13 @@
|
||||
#include <string.h>
|
||||
#include "oslib/dragasprite.h"
|
||||
#include "oslib/osfile.h"
|
||||
#include "oslib/osspriteop.h"
|
||||
#include "oslib/wimp.h"
|
||||
#include "netsurf/desktop/save_text.h"
|
||||
#include "netsurf/riscos/gui.h"
|
||||
#include "netsurf/riscos/save_complete.h"
|
||||
#include "netsurf/riscos/save_draw.h"
|
||||
#include "netsurf/riscos/thumbnail.h"
|
||||
#include "netsurf/utils/log.h"
|
||||
#include "netsurf/utils/messages.h"
|
||||
#include "netsurf/utils/utils.h"
|
||||
@ -178,12 +180,19 @@ void ro_gui_save_datasave_ack(wimp_message *message)
|
||||
* Prepare an application directory and save_complete() to it.
|
||||
*/
|
||||
|
||||
#define WIDTH 64
|
||||
#define HEIGHT 64
|
||||
#define SPRITE_SIZE (16 + 44 + ((WIDTH / 2 + 3) & ~3) * HEIGHT / 2)
|
||||
|
||||
void ro_gui_save_complete(struct content *c, char *path)
|
||||
{
|
||||
char buf[256];
|
||||
char buf[256], spritename[12];
|
||||
FILE *fp;
|
||||
os_error *error;
|
||||
osspriteop_area *area;
|
||||
char *appname;
|
||||
|
||||
/* Create dir */
|
||||
error = xosfile_create_dir(path, 0);
|
||||
if (error) {
|
||||
LOG(("xosfile_create_dir: 0x%x: %s",
|
||||
@ -192,6 +201,7 @@ void ro_gui_save_complete(struct content *c, char *path)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Save !Run file */
|
||||
snprintf(buf, sizeof buf, "%s.!Run", path);
|
||||
fp = fopen(buf, "w");
|
||||
if (!fp) {
|
||||
@ -209,5 +219,64 @@ void ro_gui_save_complete(struct content *c, char *path)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Create !Sprites */
|
||||
snprintf(buf, sizeof buf, "%s.!Sprites", path);
|
||||
appname = strrchr(path, '.');
|
||||
if (!appname) {
|
||||
LOG(("Couldn't get appname"));
|
||||
warn_user("Failed to acquire dirname");
|
||||
return;
|
||||
}
|
||||
snprintf(spritename, sizeof spritename, "%s", appname+1);
|
||||
area = xcalloc(SPRITE_SIZE, sizeof(char));
|
||||
if (!area) {
|
||||
LOG(("xcalloc failed"));
|
||||
warn_user("No memory for sprite");
|
||||
return;
|
||||
}
|
||||
area->size = SPRITE_SIZE;
|
||||
area->sprite_count = 0;
|
||||
area->first = 16;
|
||||
area->used = 16;
|
||||
error = xosspriteop_create_sprite(osspriteop_NAME, area,
|
||||
spritename, false,
|
||||
WIDTH / 2, HEIGHT / 2, os_MODE8BPP90X90);
|
||||
if (error) {
|
||||
LOG(("Failed to create sprite"));
|
||||
warn_user("Failed to create iconsprite");
|
||||
xfree(area);
|
||||
return;
|
||||
}
|
||||
thumbnail_create(c, area,
|
||||
(osspriteop_header *) ((char *) area + 16),
|
||||
WIDTH / 2, HEIGHT / 2);
|
||||
error = xosspriteop_save_sprite_file(osspriteop_NAME, area, buf);
|
||||
if (error) {
|
||||
LOG(("Failed to save iconsprite"));
|
||||
warn_user("Failed to save iconsprite");
|
||||
xfree(area);
|
||||
return;
|
||||
}
|
||||
|
||||
xfree(area);
|
||||
|
||||
/* Create !Boot file */
|
||||
snprintf(buf, sizeof buf, "%s.!Boot", path);
|
||||
fp = fopen(buf, "w");
|
||||
if (!fp) {
|
||||
LOG(("fopen(): errno = %i", errno));
|
||||
warn_user(strerror(errno));
|
||||
return;
|
||||
}
|
||||
fprintf(fp, "IconSprites <Obey$Dir>.!Sprites\n");
|
||||
fclose(fp);
|
||||
error = xosfile_set_type(buf, 0xfeb);
|
||||
if (error) {
|
||||
LOG(("xosfile_set_type: 0x%x: %s",
|
||||
error->errnum, error->errmess));
|
||||
warn_user(error->errmess);
|
||||
return;
|
||||
}
|
||||
|
||||
save_complete(c, path);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user