mirror of https://github.com/aseprite/aseprite.git
				
				
				
			
		
			
				
	
	
		
			165 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C++
		
	
	
	
| // Aseprite
 | |
| // Copyright (C) 2018-2019  Igara Studio S.A.
 | |
| // Copyright (C) 2001-2018  David Capello
 | |
| //
 | |
| // This program is distributed under the terms of
 | |
| // the End-User License Agreement for Aseprite.
 | |
| 
 | |
| #ifndef APP_SCRIPTING_H_INCLUDED
 | |
| #define APP_SCRIPTING_H_INCLUDED
 | |
| #pragma once
 | |
| 
 | |
| #ifndef ENABLE_SCRIPTING
 | |
|   #error ENABLE_SCRIPTING must be defined
 | |
| #endif
 | |
| 
 | |
| #include "app/color.h"
 | |
| #include "app/commands/params.h"
 | |
| #include "doc/brush.h"
 | |
| #include "doc/frame.h"
 | |
| #include "doc/object_ids.h"
 | |
| #include "gfx/fwd.h"
 | |
| 
 | |
| #include <cstdio>
 | |
| #include <string>
 | |
| #include <map>
 | |
| 
 | |
| struct lua_State;
 | |
| 
 | |
| namespace base {
 | |
|   class Version;
 | |
| }
 | |
| 
 | |
| namespace gfx {
 | |
|   class ColorSpace;
 | |
| }
 | |
| 
 | |
| namespace doc {
 | |
|   class Cel;
 | |
|   class FrameTag;
 | |
|   class Image;
 | |
|   class Layer;
 | |
|   class Mask;
 | |
|   class Palette;
 | |
|   class Sprite;
 | |
|   class WithUserData;
 | |
| }
 | |
| 
 | |
| namespace tools {
 | |
|   class Tool;
 | |
| }
 | |
| 
 | |
| namespace app {
 | |
| 
 | |
|   class Site;
 | |
| 
 | |
|   namespace script {
 | |
| 
 | |
|   enum class FileAccessMode {
 | |
|     Execute = 1,
 | |
|     Write = 2,
 | |
|     Read = 4,
 | |
|     Full = 7
 | |
|   };
 | |
| 
 | |
|   class EngineDelegate {
 | |
|   public:
 | |
|     virtual ~EngineDelegate() { }
 | |
|     virtual void onConsolePrint(const char* text) = 0;
 | |
|   };
 | |
| 
 | |
|   class Engine {
 | |
|   public:
 | |
|     Engine();
 | |
|     ~Engine();
 | |
| 
 | |
|     EngineDelegate* delegate() { return m_delegate; }
 | |
|     void setDelegate(EngineDelegate* delegate) {
 | |
|       m_delegate = delegate;
 | |
|     }
 | |
| 
 | |
|     void printLastResult();
 | |
|     bool evalCode(const std::string& code,
 | |
|                   const std::string& filename = std::string());
 | |
|     bool evalFile(const std::string& filename,
 | |
|                   const Params& params = Params());
 | |
| 
 | |
|     void consolePrint(const char* text) {
 | |
|       onConsolePrint(text);
 | |
|     }
 | |
| 
 | |
|   private:
 | |
|     void onConsolePrint(const char* text);
 | |
| 
 | |
|     lua_State* L;
 | |
|     EngineDelegate* m_delegate;
 | |
|     bool m_printLastResult;
 | |
|   };
 | |
| 
 | |
|   class ScopedEngineDelegate {
 | |
|   public:
 | |
|     ScopedEngineDelegate(Engine* engine, EngineDelegate* delegate)
 | |
|       : m_engine(engine),
 | |
|         m_oldDelegate(engine->delegate()) {
 | |
|       m_engine->setDelegate(delegate);
 | |
|     }
 | |
|     ~ScopedEngineDelegate() {
 | |
|       m_engine->setDelegate(m_oldDelegate);
 | |
|     }
 | |
|   private:
 | |
|     Engine* m_engine;
 | |
|     EngineDelegate* m_oldDelegate;
 | |
|   };
 | |
| 
 | |
|   int push_image_iterator_function(lua_State* L, const doc::Image* image, int extraArgIndex);
 | |
|   void push_brush(lua_State* L, const doc::BrushRef& brush);
 | |
|   void push_cel_image(lua_State* L, doc::Cel* cel);
 | |
|   void push_cels(lua_State* L, const doc::ObjectIds& cels);
 | |
|   void push_cels(lua_State* L, doc::Layer* layer);
 | |
|   void push_cels(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_color_space(lua_State* L, const gfx::ColorSpace& cs);
 | |
|   void push_doc_range(lua_State* L, Site& site);
 | |
|   void push_image(lua_State* L, doc::Image* image);
 | |
|   void push_images(lua_State* L, const doc::ObjectIds& images);
 | |
|   void push_layers(lua_State* L, const doc::ObjectIds& layers);
 | |
|   void push_palette(lua_State* L, doc::Palette* palette);
 | |
|   void push_sprite_cel(lua_State* L, doc::Cel* cel);
 | |
|   void push_sprite_frame(lua_State* L, doc::Sprite* sprite, doc::frame_t frame);
 | |
|   void push_sprite_frames(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_sprite_frames(lua_State* L, doc::Sprite* sprite, const std::vector<doc::frame_t>& frames);
 | |
|   void push_sprite_layers(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_sprite_palette(lua_State* L, doc::Sprite* sprite, doc::Palette* palette);
 | |
|   void push_sprite_palettes(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_sprite_selection(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_sprite_slices(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_sprite_tags(lua_State* L, doc::Sprite* sprite);
 | |
|   void push_sprites(lua_State* L);
 | |
|   void push_tool(lua_State* L, tools::Tool* tool);
 | |
|   void push_userdata(lua_State* L, doc::WithUserData* userData);
 | |
|   void push_version(lua_State* L, const base::Version& ver);
 | |
| 
 | |
|   gfx::Point convert_args_into_point(lua_State* L, int index);
 | |
|   gfx::Rect convert_args_into_rect(lua_State* L, int index);
 | |
|   gfx::Size convert_args_into_size(lua_State* L, int index);
 | |
|   app::Color convert_args_into_color(lua_State* L, int index);
 | |
|   doc::color_t convert_args_into_pixel_color(lua_State* L, int index);
 | |
|   doc::Palette* get_palette_from_arg(lua_State* L, int index);
 | |
|   doc::Image* may_get_image_from_arg(lua_State* L, int index);
 | |
|   doc::Image* get_image_from_arg(lua_State* L, int index);
 | |
|   doc::Cel* get_image_cel_from_arg(lua_State* L, int index);
 | |
|   doc::frame_t get_frame_number_from_arg(lua_State* L, int index);
 | |
|   const doc::Mask* get_mask_from_arg(lua_State* L, int index);
 | |
|   tools::Tool* get_tool_from_arg(lua_State* L, int index);
 | |
|   doc::BrushRef get_brush_from_arg(lua_State* L, int index);
 | |
| 
 | |
|   // Used by App.open(), Sprite{ fromFile }, and Image{ fromFile }
 | |
|   enum class LoadSpriteFromFileParam { FullAniAsSprite,
 | |
|                                        OneFrameAsImage };
 | |
|   int load_sprite_from_file(lua_State* L, const char* filename,
 | |
|                             const LoadSpriteFromFileParam param);
 | |
| 
 | |
| } // namespace script
 | |
| } // namespace app
 | |
| 
 | |
| #endif
 |