This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/editors/space_info/textview.h
Campbell Barton 3d3bc74884 Cleanup: remove redundant const qualifiers for POD types
MSVC used to warn about const mismatch for arguments passed by value.
Remove these as newer versions of MSVC no longer show this warning.
2022-01-07 14:16:26 +11:00

88 lines
3.0 KiB
C++

/*
* This program 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.
*
* This program 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 this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/** \file
* \ingroup spinfo
*/
#pragma once
enum eTextViewContext_LineFlag {
TVC_LINE_FG = (1 << 0),
TVC_LINE_BG = (1 << 1),
TVC_LINE_ICON = (1 << 2),
TVC_LINE_ICON_FG = (1 << 3),
TVC_LINE_ICON_BG = (1 << 4)
};
typedef struct TextViewContext {
/** Font size scaled by the interface size. */
int lheight;
/** Text selection, when a selection range is in use. */
int sel_start, sel_end;
int row_vpadding;
/** Area to draw text: (0, 0, winx, winy) with a margin applied and scroll-bar subtracted. */
rcti draw_rect;
/** Area to draw text background colors (extending beyond text in some cases). */
rcti draw_rect_outer;
/** Scroll offset in pixels. */
int scroll_ymin, scroll_ymax;
/* callbacks */
int (*begin)(struct TextViewContext *tvc);
void (*end)(struct TextViewContext *tvc);
const void *arg1;
const void *arg2;
/* iterator */
int (*step)(struct TextViewContext *tvc);
void (*line_get)(struct TextViewContext *tvc, const char **r_line, int *r_len);
enum eTextViewContext_LineFlag (*line_data)(struct TextViewContext *tvc,
uchar fg[4],
uchar bg[4],
int *r_icon,
uchar r_icon_fg[4],
uchar r_icon_bg[4]);
void (*draw_cursor)(struct TextViewContext *tvc, int cwidth, int columns);
/* constant theme colors */
void (*const_colors)(struct TextViewContext *tvc, unsigned char bg_sel[4]);
const void *iter;
int iter_index;
/** Used for internal multi-line iteration. */
int iter_char_begin;
/** The last character (not inclusive). */
int iter_char_end;
/** Internal iterator use. */
int iter_tmp;
} TextViewContext;
/**
* \param r_mval_pick_item: The resulting item clicked on using \a mval_init.
* Set from the void pointer which holds the current iterator.
* Its type depends on the data being iterated over.
* \param r_mval_pick_offset: The offset in bytes of the \a mval_init.
* Use for selection.
*/
int textview_draw(struct TextViewContext *tvc,
bool do_draw,
const int mval_init[2],
void **r_mval_pick_item,
int *r_mval_pick_offset);