Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
    scew_parser *parser = NULL;
    if (init() != 0) {
        return 1;
    }

    if (argc == 2) {
        if (exists(argv[1])) {
            parser = scew_parser_create();
            scew_parser_ignore_whitespaces(parser, 1);
            scew_parser_load_file(parser, argv[1]);
            maptree = scew_parser_tree(parser);
        } else {
            allegro_message("Cannot load file: %s", argv[1]);
            close_program = 1;
        }
    } else if (argc == 4) {
        maptree = new_map(0, MAP_WIN.w / TILE_W, atoi(argv[1]), 1, argv[2]);
        map_offset = atoi(argv[1]) * TILE_H - EDITOR_WIN_H;
    } else {
        /* print usage */
        allegro_message
            ("Usage:\n\"editor.exe <filename>\" to load a file\n \"editor.exe <height_in_tiles> <default_tile_name> <newmapfile>\" to create a new map");

        close_program = 1;
    }

    while (!close_program) {
        /* get input */
        parse_mouse();
        get_grid_item();
        if (keypressed()) {
            parse_keyboard();
        }

        /* blit virtual screen */
        clear_to_color(vscreen, DEAD_COLOR);
        draw_select_lists(vscreen);
        draw_ctrl_box(vscreen);

        update_screen();
    }

    if (argc == 2) {
        write_map(argv[1], maptree);
        scew_parser_free(parser);
    } else if (argc == 4) {
        write_map(argv[3], maptree);
        scew_tree_free(maptree);
    }
    destroy_bitmap(vscreen);
    cleanup();
    return 0;
}
Ejemplo n.º 2
0
Archivo: atlas.c Proyecto: cpence/arcus
arcus_atlas *atlas_from_file(const char *filename)
{
    scew_reader *reader;
    scew_parser *parser;
    scew_tree *tree;
    arcus_atlas *ret;
    
    reader = scew_reader_file_create(filename);
    if (!reader)
    {
        set_error_string("atlas_from_file: cannot open/read file");
        return NULL;
    }

    parser = scew_parser_create();
    if (!parser)
    {
        set_error_string("atlas_from_file: cannot create a parser (scew bug?)");
        
        scew_reader_close(reader);
        scew_reader_free(reader);
        return NULL;
    }

    tree = scew_parser_load(parser, reader);
    if (!tree)
    {
        set_error_string("atlas_from_file: cannot create tree from parser and reader (invalid XML?)");
        
        scew_parser_free(parser);
        scew_reader_close(reader);
        scew_reader_free(reader);
        return NULL;
    }

    ret = atlas_from_xml(scew_tree_root(tree));
        
    scew_tree_free(tree);
    scew_parser_free(parser);
    scew_reader_close(reader);
    scew_reader_free(reader);
    
    return ret;
}
Ejemplo n.º 3
0
scew_bool
scew_parser_load_stream (scew_parser *parser, scew_reader *reader)
{
  scew_bool result = SCEW_TRUE;

  assert (parser != NULL);
  assert (reader != NULL);
  assert (parser->tree_hook.hook != NULL);

  result = parse_stream_reader_ (parser, reader);
  if (!result)
    {
      /* Free the last allocated tree if something goes wrong. */
      scew_tree_free (parser->tree);
      parser->tree = NULL;
    }

  return result;
}
Ejemplo n.º 4
0
/** 
 * @brief Open given path-file and read data from it to member variables.
 * @param [in] path Path to project file.
 * @param [out] sError Error string if error happened.
 * @return TRUE if reading succeeded, FALSE if error happened.
 */
BOOL ProjectFile::Read(LPCTSTR path, String *sError)
{
	BOOL loaded = FALSE;
    scew_tree* tree = NULL;
    scew_parser* parser = NULL;

    parser = scew_parser_create();
    scew_parser_ignore_whitespaces(parser, 1);

	scew_reader *reader = NULL;
	FILE * fp = _tfopen(path, _T("r"));
	if (fp)
	{
		reader = scew_reader_fp_create(fp);
		if (reader)
		{
			tree = scew_parser_load (parser, reader);

			if (tree)
			{
				scew_element * root = GetRootElement(tree);
				if (root)
				{
					// Currently our content is paths, so expect
					// having paths in valid project file!
					if (GetPathsData(root))
						loaded = TRUE;
				};
			}
		}

		scew_tree_free(tree);
		scew_reader_free(reader);

		/* Frees the SCEW parser */
		scew_parser_free(parser);
		fclose(fp);
	}
	return loaded;
}
Ejemplo n.º 5
0
scew_tree*
scew_parser_load (scew_parser *parser, scew_reader *reader)
{
  scew_tree *tree = NULL;

  assert (parser != NULL);
  assert (reader != NULL);

  scew_parser_reset (parser);

  if (!parse_reader_ (parser, reader))
    {
      /* Free the allocated tree if something goes wrong. */
      scew_tree_free (parser->tree);
      parser->tree = NULL;
    }
  else
    {
      tree = parser->tree;
    }

  return tree;
}
Ejemplo n.º 6
0
int
main (int argc, char *argv[])
{
  scew_reader *reader = NULL;
  scew_parser *parser = NULL;
  scew_tree *tree = NULL;
  scew_writer *writer = NULL;
  scew_printer *printer = NULL;

#if defined(_MSC_VER) && defined(XML_UNICODE_WCHAR_T)
  /* Change stdout to Unicode before writing anything. */
  _setmode(_fileno(stdout), _O_U16TEXT);
#endif /* _MSC_VER && XML_UNICODE_WCHAR_T */

  if (argc < 2)
    {
      scew_printf (_XT("Usage: scew_print file.xml\n"));
      return EXIT_FAILURE;
    }

  /* Creates an SCEW parser. This is the first function to call. */
  parser = scew_parser_create ();

  scew_parser_ignore_whitespaces (parser, SCEW_TRUE);

  /* Loads an XML file. */
  reader = scew_reader_file_create (argv[1]);
  if (reader == NULL)
    {
      scew_error code = scew_error_code ();
      scew_printf (_XT("Unable to load file (error #%d: %s)\n"),
                   code, scew_error_string (code));
      return EXIT_FAILURE;
    }

  tree = scew_parser_load (parser, reader);
  if (tree == NULL)
    {
      scew_error code = scew_error_code ();
      scew_printf (_XT("Unable to parse file (error #%d: %s)\n"),
                   code, scew_error_string (code));
      if (code == scew_error_expat)
        {
          enum XML_Error expat_code = scew_error_expat_code (parser);
          scew_printf (_XT("Expat error #%d (line %d, column %d): %s\n"),
                       expat_code,
                       scew_error_expat_line (parser),
                       scew_error_expat_column (parser),
                       scew_error_expat_string (expat_code));
        }

      /* Frees the SCEW parser and reader. */
      scew_reader_free (reader);
      scew_parser_free (parser);

      return EXIT_FAILURE;
    }

  /* Prints full tree. */
  scew_printf (_XT("\n*** Manual print:\n\n"));
  print_element (scew_tree_root (tree), 0);

  /* Prints full tree using SCEW writer. */
  scew_printf (_XT("\n\n*** SCEW writer (stdout) print:\n\n"));

  writer = scew_writer_fp_create (stdout);
  printer = scew_printer_create (writer);
  scew_printer_print_tree (printer, tree);
  scew_printf (_XT("\n"));

  /* Remember to free tree (scew_parser_free does not free it). */
  scew_tree_free (tree);

  /* Also free the printer and writer. */
  scew_writer_free (writer);
  scew_printer_free (printer);

  /* Frees the SCEW parser and reader. */
  scew_reader_free (reader);
  scew_parser_free (parser);

  return 0;
}
Ejemplo n.º 7
0
/** 
 * @brief Save data from member variables to path-file.
 * @param [in] path Path to project file.
 * @param [out] sError Error string if error happened.
 * @return TRUE if saving succeeded, FALSE if error happened.
 */
BOOL ProjectFile::Save(LPCTSTR path, String *sError)
{
	BOOL success = TRUE;
	scew_tree* tree = NULL;
	scew_element* root = NULL;
	scew_element* paths = NULL;

	tree = scew_tree_create();
	root = scew_tree_set_root(tree, Root_element_name);
	if (root != NULL)
	{
		paths = AddPathsElement(root);
	}
	else
		success = FALSE;

	if (paths != NULL)
	{
		AddPathsContent(paths);
	}
	else
		success = FALSE;
	
	scew_tree_set_xml_encoding(tree, "UTF-8");

	scew_writer *writer = NULL;
	scew_printer *printer = NULL;
	FILE * fp = _tfopen(path, _T("w"));
	if (fp)
	{
		writer = scew_writer_fp_create(fp);
		if (writer)
		{
			printer = scew_printer_create(writer);
			
			if (!scew_printer_print_tree(printer, tree) ||
				!scew_printf(_XT("\n")))
			{
				success = FALSE;
				*sError = LoadResString(IDS_FILEWRITE_ERROR);
			}
		}
		else
		{
			success = FALSE;
			*sError = LoadResString(IDS_FILEWRITE_ERROR);
		}
		fclose(fp);
	}
	else
	{
		success = FALSE;
	}
	
	/* Frees the SCEW tree */
	scew_tree_free(tree);
	scew_writer_free(writer);
	scew_printer_free(printer);

	if (success == FALSE)
	{
		*sError = LoadResString(IDS_FILEWRITE_ERROR);
	}
	return success;
}
Ejemplo n.º 8
0
Archivo: sdew.c Proyecto: naadsm/sdew
/*******************************************************************************
 *  Function:  Free_RootTree
 *
 *  This function frees the memory used by the input parameter _rootTree, which
 *  represents a valid pointer to a scew_tree structure.
 *
 *  Parameters:
 *    _rootTree:  A void * representing a pointer to a valid scew_tree.  The
 *                memory used by this structure will be freed by this function.
 *
 *  Returns:
 *            NOTHING.
 *
 ******************************************************************************/
DLLIMPORT void  Free_RootTree( void *_rootTree )
{
   if ( _rootTree != NULL )
     scew_tree_free( _rootTree );

}