2023-08-16 00:20:26 +10:00
|
|
|
/* SPDX-FileCopyrightText: 2008 Blender Authors
|
2023-05-31 16:19:06 +02:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
2.5 Branch
==========
* Changed wmOperatorType, removing init/exit callbacks and adding cancel
callback, removed default storage in favor of properties. Defined return
values for exec/invoke/modal/cancel.
* Don't allocate operator on the stack, and removed operator copy for
handlers. Now it frees based on return values from callbacks, and just
keeps a wmOperator on the heap. Also it now registers after the operator
is fully finished, to get the correct final properties.
* Changed OP_get_* functions to return 1 if the property is found and 0
otherwise, gives more readable code in my opinion. Added OP_verify_*
functions to quickly check if the property is available and set if it's
not, that's common for exec/invoke.
* Removed WM_operatortypelist_append in favor of WM_operatortype_append
which takes a function pointer instead of a list, avoids macro's and
duplicating code.
* Fix a crash where the handler would still be used while it was freed by
the operator.
* Spacetypes now have operatortypes() and keymap() callbacks to abstract
them a bit more.
* Renamed C->curarea to C->area for consistency. Removed View3D/View2D/
SpaceIpo from bContext, seems bad to keep these.
* Set context variables like window/screen/area/region to NULL again when
leaving that context, instead of leaving the pointers there.
* Added if(G.f & G_DEBUG) for many of the prints, makes output a bit
cleaner and easier to debug.
* Fixed priority of the editors/interface module in scons, would otherwise
give link errors.
* Added start of generic view2d api.
* Added space_time with some basic drawing and a single operator to change
the frame.
2008-06-11 10:10:31 +00:00
|
|
|
|
2019-02-18 08:08:12 +11:00
|
|
|
/** \file
|
|
|
|
|
* \ingroup editors
|
2011-02-21 07:25:24 +00:00
|
|
|
*/
|
|
|
|
|
|
2012-02-17 18:59:41 +00:00
|
|
|
#pragma once
|
2008-01-01 18:29:19 +00:00
|
|
|
|
2.5
New: Custom region draw callbacks.
For Martin: an example is now in space_view3d/view3d_edit.c
On middlemouse rotate view, it draws a small square in center.
It works likes this:
#include "ED_space_api.h"
handle= ED_region_draw_cb_activate(region->type, drawfunc, type)
and to stop it:
ED_region_draw_cb_exit(region->type, handle)
drawfunc is of type (const bContext *C, ARegion *ar)
currently it gets called only as type REGION_DRAW_POST, later we
can add more (PRE, POST_XRAY, POST_2D, etc).
For correct usage, these calls should return leaving view transform
unaltered.
2009-01-09 15:04:52 +00:00
|
|
|
struct ARegionType;
|
|
|
|
|
struct bContext;
|
|
|
|
|
|
2021-12-09 00:55:11 +11:00
|
|
|
/* Only called once on startup. storage is global in BKE kernel listbase. */
|
2023-08-04 22:15:25 -04:00
|
|
|
void ED_spacetypes_init();
|
|
|
|
|
void ED_spacemacros_init();
|
2013-03-11 20:27:38 +00:00
|
|
|
|
2022-04-22 08:16:37 +10:00
|
|
|
/* The plugin-able API for export to editors. */
|
2008-01-01 18:29:19 +00:00
|
|
|
|
2021-12-09 00:55:11 +11:00
|
|
|
/* -------------------------------------------------------------------- */
|
|
|
|
|
/** \name Calls for registering default spaces
|
|
|
|
|
*
|
|
|
|
|
* Calls for registering default spaces, only called once, from #ED_spacetypes_init
|
|
|
|
|
* \{ */
|
|
|
|
|
|
2023-08-04 22:15:25 -04:00
|
|
|
void ED_spacetype_outliner();
|
|
|
|
|
void ED_spacetype_view3d();
|
|
|
|
|
void ED_spacetype_ipo();
|
|
|
|
|
void ED_spacetype_image();
|
|
|
|
|
void ED_spacetype_node();
|
|
|
|
|
void ED_spacetype_buttons();
|
|
|
|
|
void ED_spacetype_info();
|
|
|
|
|
void ED_spacetype_file();
|
|
|
|
|
void ED_spacetype_action();
|
|
|
|
|
void ED_spacetype_nla();
|
|
|
|
|
void ED_spacetype_script();
|
|
|
|
|
void ED_spacetype_text();
|
|
|
|
|
void ED_spacetype_sequencer();
|
|
|
|
|
void ED_spacetype_logic();
|
|
|
|
|
void ED_spacetype_console();
|
|
|
|
|
void ED_spacetype_userpref();
|
|
|
|
|
void ED_spacetype_clip();
|
|
|
|
|
void ED_spacetype_statusbar();
|
|
|
|
|
void ED_spacetype_topbar();
|
|
|
|
|
void ED_spacetype_spreadsheet();
|
2008-01-01 18:29:19 +00:00
|
|
|
|
2021-12-09 00:55:11 +11:00
|
|
|
/** \} */
|
|
|
|
|
|
|
|
|
|
/* -------------------------------------------------------------------- */
|
2022-09-16 18:13:19 +10:00
|
|
|
/** \name Space-type Static Data
|
2021-12-09 00:55:11 +11:00
|
|
|
* Calls for instancing and freeing space-type static data called in #WM_init_exit
|
|
|
|
|
* \{ */
|
|
|
|
|
|
2023-08-04 22:15:25 -04:00
|
|
|
void ED_file_init();
|
|
|
|
|
void ED_file_exit();
|
2009-01-06 14:42:54 +00:00
|
|
|
|
2021-12-09 00:55:11 +11:00
|
|
|
/** \} */
|
|
|
|
|
|
2012-05-12 20:39:39 +00:00
|
|
|
#define REGION_DRAW_POST_VIEW 0
|
|
|
|
|
#define REGION_DRAW_POST_PIXEL 1
|
|
|
|
|
#define REGION_DRAW_PRE_VIEW 2
|
2019-04-23 09:15:45 -06:00
|
|
|
#define REGION_DRAW_BACKDROP 3
|
2.5
New: Custom region draw callbacks.
For Martin: an example is now in space_view3d/view3d_edit.c
On middlemouse rotate view, it draws a small square in center.
It works likes this:
#include "ED_space_api.h"
handle= ED_region_draw_cb_activate(region->type, drawfunc, type)
and to stop it:
ED_region_draw_cb_exit(region->type, handle)
drawfunc is of type (const bContext *C, ARegion *ar)
currently it gets called only as type REGION_DRAW_POST, later we
can add more (PRE, POST_XRAY, POST_2D, etc).
For correct usage, these calls should return leaving view transform
unaltered.
2009-01-09 15:04:52 +00:00
|
|
|
|
2023-08-04 22:15:25 -04:00
|
|
|
void *ED_region_draw_cb_activate(ARegionType *art,
|
|
|
|
|
void (*draw)(const bContext *, ARegion *, void *),
|
2020-09-04 20:59:13 +02:00
|
|
|
void *customdata,
|
2012-05-12 20:39:39 +00:00
|
|
|
int type);
|
2023-08-04 22:15:25 -04:00
|
|
|
void ED_region_draw_cb_draw(const bContext *C, ARegion *region, int type);
|
|
|
|
|
void ED_region_surface_draw_cb_draw(ARegionType *art, int type);
|
|
|
|
|
bool ED_region_draw_cb_exit(ARegionType *art, void *handle);
|
|
|
|
|
void ED_region_draw_cb_remove_by_type(ARegionType *art, void *draw_fn, void (*free)(void *));
|