# ##### BEGIN GPL LICENSE BLOCK ##### # # 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. # # ##### END GPL LICENSE BLOCK ##### import bpy import copy import bgl import blf from blf import ROTATION import mathutils from mathutils import * from math import * #from math import sin, cos, tan, atan, degrees, radians, asin, acos from bpy_extras import view3d_utils from bpy.app.handlers import persistent from .utils_geometry import * from .utils_function import * # GET ADDON COLOR SETTINGS AND PRODUCE VALUES: class SettingsStore: add_set_graph_dict = None # Use global SettingsStore class to store dict so it is not recreated each call # todo : come up with better way for storing and checking add-on settings def addon_settings_graph(key): addon_prefs = bpy.context.preferences.addons[__package__].preferences if SettingsStore.add_set_graph_dict is not None: add_set_graph_dict = SettingsStore.add_set_graph_dict settings_change = ( add_set_graph_dict['col_scheme'] != addon_prefs.np_col_scheme, add_set_graph_dict['size_num'] != addon_prefs.np_size_num, add_set_graph_dict['scale_dist'] != addon_prefs.np_scale_dist, add_set_graph_dict['suffix_dist'] != addon_prefs.np_suffix_dist, add_set_graph_dict['display_badge'] != addon_prefs.np_display_badge, add_set_graph_dict['size_badge'] != addon_prefs.np_size_badge) if True in settings_change: SettingsStore.add_set_graph_dict = None if SettingsStore.add_set_graph_dict is None: #print(" add_set_graph_dict == None ") add_set_graph_dict = {} add_set_graph_dict.update( col_scheme = addon_prefs.np_col_scheme, size_num = addon_prefs.np_size_num, scale_dist = addon_prefs.np_scale_dist, suffix_dist = addon_prefs.np_suffix_dist, display_badge = addon_prefs.np_display_badge, size_badge = addon_prefs.np_size_badge) if addon_prefs.np_col_scheme == 'csc_default_grey': add_set_graph_dict.update( col_font_np = (0.95, 0.95, 0.95, 1.0), col_font_instruct_main = (0.67, 0.67, 0.67, 1.0), col_font_instruct_shadow = (0.15, 0.15, 0.15, 1.0), col_font_keys = (0.15, 0.15, 0.15, 1.0), col_field_keys_aff = (0.51, 0.51, 0.51, 1.0), col_field_keys_neg = (0.41, 0.41, 0.41, 1.0), col_line_main = (0.9, 0.9, 0.9, 1.0), col_line_shadow = (0.1, 0.1, 0.1, 0.25), col_num_main = (0.95, 0.95, 0.95, 1.0), col_num_shadow = (0.0, 0.0, 0.0, 0.75), col_gw_line_cross = (0.25, 0.35, 0.4, 0.87), col_gw_line_base_free = (1.0, 1.0, 1.0, 0.85), col_gw_line_base_lock_x = (1.0, 0.0, 0.0, 1.0), col_gw_line_base_lock_y = (0.5, 0.75, 0.0, 1.0), col_gw_line_base_lock_z = (0.0, 0.2, 0.85, 1.0), col_gw_line_base_lock_arb = (0.0, 0.0, 0.0, 0.5), col_gw_line_all = (1.0, 1.0, 1.0, 0.85), col_gw_fill_base_x = (1.0, 0.0, 0.0, 0.2), col_gw_fill_base_y = (0.0, 1.0, 0.0, 0.2), col_gw_fill_base_z = (0.0, 0.2, 0.85, 0.2), col_gw_fill_base_arb = (0.0, 0.0, 0.0, 0.15), col_bg_fill_main_run = (1.0, 0.5, 0.0, 1.0), col_bg_fill_main_nav = (0.5, 0.75 ,0.0 ,1.0), col_bg_fill_square = (0.0, 0.0, 0.0, 1.0), col_bg_fill_aux = (0.4, 0.15, 0.75, 1.0), #(0.4, 0.15, 0.75, 1.0) (0.2, 0.15, 0.55, 1.0) col_bg_line_symbol = (1.0, 1.0, 1.0, 1.0), col_bg_font_main = (1.0, 1.0, 1.0, 1.0), col_bg_font_aux = (1.0, 1.0, 1.0, 1.0) ) elif addon_prefs.np_col_scheme == 'csc_school_marine': add_set_graph_dict.update( col_font_np = (0.25, 0.35, 0.4, 0.87), col_font_instruct_main = (1.0, 1.0, 1.0, 1.0), col_font_instruct_shadow = (0.25, 0.35, 0.4, 0.6), col_font_keys = (1.0, 1.0, 1.0, 1.0), col_field_keys_aff = (0.55, 0.6, 0.64, 1.0), col_field_keys_neg = (0.67, 0.72, 0.76, 1.0), col_line_main = (1.0, 1.0, 1.0, 1.0), col_line_shadow = (0.1, 0.1, 0.1, 0.25), col_num_main = (0.25, 0.35, 0.4, 1.0), #(1.0, 0.5, 0.0, 1.0) col_num_shadow = (1.0, 1.0, 1.0, 1.0), col_gw_line_cross = (0.25, 0.35, 0.4, 0.87), col_gw_line_base_free = (1.0, 1.0, 1.0, 0.85), col_gw_line_base_lock_x = (1.0, 0.0, 0.0, 1.0), col_gw_line_base_lock_y = (0.5, 0.75, 0.0, 1.0), col_gw_line_base_lock_z = (0.0, 0.2, 0.85, 1.0), col_gw_line_base_lock_arb = (0.0, 0.0, 0.0, 0.5), col_gw_line_all = (1.0, 1.0, 1.0, 0.85), col_gw_fill_base_x = (1.0, 0.0, 0.0, 0.2), col_gw_fill_base_y = (0.0, 1.0, 0.0, 0.2), col_gw_fill_base_z = (0.0, 0.2, 0.85, 0.2), col_gw_fill_base_arb = (0.0, 0.0, 0.0, 0.15), col_bg_fill_main_run = (1.0, 0.5, 0.0, 1.0), col_bg_fill_main_nav = (0.5, 0.75 ,0.0 ,1.0), col_bg_fill_square = (0.0, 0.0, 0.0, 1.0), col_bg_fill_aux = (0.4, 0.15, 0.75, 1.0), #(0.4, 0.15, 0.75, 1.0) (0.2, 0.15, 0.55, 1.0) col_bg_line_symbol = (1.0, 1.0, 1.0, 1.0), col_bg_font_main = (1.0, 1.0, 1.0, 1.0), col_bg_font_aux = (1.0, 1.0, 1.0, 1.0) ) SettingsStore.add_set_graph_dict = add_set_graph_dict.copy() return SettingsStore.add_set_graph_dict[key] # ON-SCREEN INSTRUCTIONS: def display_instructions(region, rv3d, instruct, keys_aff, keys_nav, keys_neg): userpref = bpy.context.preferences system = userpref.system rwtools = 0 rwui = 0 np_print(system.use_region_overlap) if system.use_region_overlap: area = bpy.context.area np_print('GO', area.regions) for r in area.regions: if r.type == 'TOOLS': rwtools = r.width elif r.type == 'UI': rwui = r.width np_print('rwtools', rwtools, 'rwui', rwui) field_keys_y = 46 field_keys_x = 80 rw = region.width rh = region.height np_print('rw, rh', rw, rh) expand = False crop = False len_aff_max = rw - 140 - rwtools - rwui len_aff = len(keys_aff) * 5 len_neg = len(keys_neg) * 5 len_ins = len(instruct) * 18 if len_aff > len_aff_max: expand = True rw_min = 480 rh_min = 280 if rw - rwtools - rwui < rw_min or rh < rh_min: crop = True version = '020' font_id = 0 keys_aff_1 = copy.deepcopy(keys_aff) keys_aff_2 = ' ' if expand: keys_aff_1 = '' keys_aff_2 = '' np_print('len(keys_aff)', len(keys_aff)) stop = 0 for i in range (0, len(keys_aff)-1): #np_print(keys_aff[i]) if keys_aff[i] == ',' and i * 5 <= len_aff_max and i > stop: stop = i np_print('stop', stop) for i in range(0, stop + 1): keys_aff_1 = keys_aff_1 + keys_aff[i] for i in range(stop + 2, len(keys_aff)): keys_aff_2 = keys_aff_2 + keys_aff[i] np_print(keys_aff_1) np_print(keys_aff_2) field_keys_aff_1 = [[field_keys_x + rwtools, field_keys_y + 21], [field_keys_x + rwtools, field_keys_y + 39], [rw - int(field_keys_x / 2) - rwui, field_keys_y + 39], [rw - int(field_keys_x / 2) - rwui, field_keys_y + 21]] field_keys_aff_2 = copy.deepcopy(field_keys_aff_1) field_keys_neg = [[field_keys_x + rwtools, field_keys_y], [field_keys_x + rwtools, field_keys_y + 18], [rw - int(field_keys_x / 2) - rwui, field_keys_y + 18], [rw - int(field_keys_x / 2) - rwui, field_keys_y]] if expand: field_keys_aff_2 = copy.deepcopy(field_keys_neg) field_keys_neg = [[field_keys_x + rwtools, field_keys_y - 21], [field_keys_x + rwtools, field_keys_y - 3], [rw - int(field_keys_x / 2) - rwui, field_keys_y - 3], [rw - int(field_keys_x / 2) - rwui, field_keys_y - 21]] size_font_np = 25 size_font_instruct = 21 size_font_keys = 11 len_np_ins = len_ins + int(size_font_np * 2.1) pos_font_np_x = (rw - len_np_ins / 2) / 2 + rwtools / 2 - rwui / 2 pos_font_np_y = 150 if crop: pos_font_np_y = 75 pos_font_instruct_x = pos_font_np_x + int(size_font_np * 2.1) pos_font_instruct_y = pos_font_np_y + 4 pos_font_keys_aff_1_x = field_keys_x + 8 + rwtools pos_font_keys_aff_1_y = field_keys_y + 26 pos_font_keys_aff_2_x = copy.deepcopy(pos_font_keys_aff_1_x) pos_font_keys_aff_2_y = copy.deepcopy(pos_font_keys_aff_1_y) pos_font_keys_nav_x = field_keys_x + 8 + rwtools pos_font_keys_nav_y = field_keys_y + 5 pos_font_keys_neg_x = rw - 52 - len_neg - rwui np_print('len_neg', len_neg) np_print('pos_font_keys_neg_x', pos_font_keys_neg_x) pos_font_keys_neg_y = field_keys_y + 5 if expand: pos_font_keys_aff_2_x = field_keys_x + 8 + rwtools pos_font_keys_aff_2_y = field_keys_y + 5 pos_font_keys_nav_x = field_keys_x + 8 + rwtools pos_font_keys_nav_y = field_keys_y - 16 pos_font_keys_neg_x = rw - 52 - len_neg - rwui pos_font_keys_neg_y = field_keys_y - 16 - rwui col_font_np = addon_settings_graph('col_font_np') col_font_instruct_main = addon_settings_graph('col_font_instruct_main') col_font_instruct_shadow = addon_settings_graph('col_font_instruct_shadow') col_font_keys = addon_settings_graph('col_font_keys') col_field_keys_aff = addon_settings_graph('col_field_keys_aff') col_field_keys_neg = addon_settings_graph('col_field_keys_neg') # instructions - NP: bgl.glColor4f(*col_font_np) blf.size(font_id, size_font_np, 72) blf.position(font_id, pos_font_np_x, pos_font_np_y, 0) blf.draw(font_id, 'NP') blf.enable(font_id, ROTATION) ang = radians(90) blf.size(font_id, int(size_font_np / 2.2), 72) blf.rotation(font_id, ang) blf.position(font_id, pos_font_np_x + int(size_font_np * 1.72) , pos_font_np_y - 2, 0) blf.draw(font_id, version) blf.disable(font_id, ROTATION) # instructions - instruct: bgl.glColor4f(*col_font_instruct_shadow) blf.position(font_id, pos_font_instruct_x + 1, pos_font_instruct_y - 1, 0) blf.size(font_id, size_font_instruct, 72) blf.draw(font_id, instruct) bgl.glColor4f(*col_font_instruct_main) blf.position(font_id, pos_font_instruct_x, pos_font_instruct_y, 0) blf.size(font_id, size_font_instruct, 72) blf.draw(font_id, instruct) bgl.glDisable(bgl.GL_BLEND) # instructions - keys - backdrop fields: bgl.glEnable(bgl.GL_BLEND) if crop == False: bgl.glColor4f(*col_field_keys_aff) bgl.glBegin(bgl.GL_TRIANGLE_FAN) for co in field_keys_aff_1: bgl.glVertex2f(*co) bgl.glEnd() bgl.glColor4f(*col_field_keys_aff) bgl.glBegin(bgl.GL_TRIANGLE_FAN) for co in field_keys_aff_2: bgl.glVertex2f(*co) bgl.glEnd() bgl.glColor4f(*col_field_keys_neg) bgl.glBegin(bgl.GL_TRIANGLE_FAN) for co in field_keys_neg: bgl.glVertex2f(*co) bgl.glEnd() # instructions - keys - writing: bgl.glColor4f(*col_font_keys) blf.size(font_id, size_font_keys, 72) blf.position(font_id, pos_font_keys_aff_1_x, pos_font_keys_aff_1_y, 0) blf.draw(font_id, keys_aff_1) blf.position(font_id, pos_font_keys_aff_2_x, pos_font_keys_aff_2_y, 0) blf.draw(font_id, keys_aff_2) blf.position(font_id, pos_font_keys_nav_x, pos_font_keys_nav_y, 0) blf.draw(font_id, keys_nav) blf.position(font_id, pos_font_keys_neg_x, pos_font_keys_neg_y, 0) blf.draw(font_id, keys_neg) # ON-SCREEN DISPLAY OF GEOWIDGET: def display_geowidget(region, rv3d, fac, ro_hor, q, helploc, n, qdef, geowidget_base, geowidget_top, geowidget_rest): geowidget_cross = [(0.0 ,2.1 ,0.0), (0.0, 0.9, 0.0), (-2.1 ,0.0 ,0.0), (-0.9, 0.0, 0.0)] # drawing of geowidget - cross part: for i, co in enumerate(geowidget_cross): co = Vector(co) co = co*fac geowidget_cross[i] = co geowidget_cross = rotate_graphic(geowidget_cross, ro_hor) geowidget_cross = rotate_graphic(geowidget_cross, q) geowidget_cross = translate_graphic(geowidget_cross, helploc) col_gw_line_cross = addon_settings_graph('col_gw_line_cross') col_gw_line_base_free = addon_settings_graph('col_gw_line_base_free') col_gw_line_base_lock_x = addon_settings_graph('col_gw_line_base_lock_x') col_gw_line_base_lock_y = addon_settings_graph('col_gw_line_base_lock_y') col_gw_line_base_lock_z = addon_settings_graph('col_gw_line_base_lock_z') col_gw_line_base_lock_arb = addon_settings_graph('col_gw_line_base_lock_arb') col_gw_line_all = addon_settings_graph('col_gw_line_all') col_gw_fill_base_x = addon_settings_graph('col_gw_fill_base_x') col_gw_fill_base_y = addon_settings_graph('col_gw_fill_base_y') col_gw_fill_base_z = addon_settings_graph('col_gw_fill_base_z') col_gw_fill_base_arb = addon_settings_graph('col_gw_fill_base_arb') bgl.glColor4f(*col_gw_line_cross) bgl.glLineWidth(1) bgl.glBegin(bgl.GL_LINE_STRIP) for i, co in enumerate(geowidget_cross): if i in range(0, 2): # range is always - first as is, second one one higher than last #np_print(i) co = view3d_utils.location_3d_to_region_2d(region, rv3d, co) bgl.glVertex2f(*co) geowidget_cross[i] = co bgl.glEnd() bgl.glBegin(bgl.GL_LINE_STRIP) for i, co in enumerate(geowidget_cross): if i in range(2, 4): # range is always - first as is, second one one higher than last #np_print(i) co = view3d_utils.location_3d_to_region_2d(region, rv3d, co) bgl.glVertex2f(*co) geowidget_cross[i] = co bgl.glEnd() # drawing of geowidget - base part: for i, co in enumerate(geowidget_base): co = Vector(co) co = co*fac geowidget_base[i] = co geowidget_base = rotate_graphic(geowidget_base, ro_hor) geowidget_base = rotate_graphic(geowidget_base, q) geowidget_base = translate_graphic(geowidget_base, helploc) n = n.to_tuple() n = list(n) for i, co in enumerate(n): n[i] = abs(round(co,4)) np_print('n for color', n) bgl.glEnable(bgl.GL_BLEND) bgl.glColor4f(*col_gw_line_base_free) bgl.glLineWidth(1) if qdef != None: if n[0] == 0.0 and n[1] == 0.0 and n[2] == 1.0: bgl.glColor4f(*col_gw_line_base_lock_z) elif n[0] == 1.0 and n[1] == 0.0 and n[2] == 0.0: bgl.glColor4f(*col_gw_line_base_lock_x) elif n[0] == 0.0 and n[1] == 1.0 and n[2] == 0.0: bgl.glColor4f(*col_gw_line_base_lock_y) else: bgl.glColor4f(*col_gw_line_base_lock_arb) bgl.glBegin(bgl.GL_LINE_STRIP) for i, co in enumerate(geowidget_base): #np_print(i) co = view3d_utils.location_3d_to_region_2d(region, rv3d, co) bgl.glVertex2f(*co) geowidget_base[i] = co bgl.glVertex2f(*geowidget_base[0]) bgl.glEnd() bgl.glColor4f(*col_gw_fill_base_arb) if n[0] == 0.0 and n[1] == 0.0 and n[2] == 1.0: bgl.glColor4f(*col_gw_fill_base_z) np_print('go_Z') elif n[0] == 1.0 and n[1] == 0.0 and n[2] == 0.0: bgl.glColor4f(*col_gw_fill_base_x) np_print('go_X') elif n[0] == 0.0 and n[1] == 1.0 and n[2] == 0.0: bgl.glColor4f(*col_gw_fill_base_y) np_print('go_Y') bgl.glBegin(bgl.GL_TRIANGLE_FAN) for co in geowidget_base: bgl.glVertex2f(*co) bgl.glEnd() # drawing of geowidget - top part: if geowidget_top != None: for i, co in enumerate(geowidget_top): co = Vector(co) co = co*fac geowidget_top[i] = co geowidget_top = rotate_graphic(geowidget_top, ro_hor) geowidget_top = rotate_graphic(geowidget_top, q) geowidget_top = translate_graphic(geowidget_top, helploc) bgl.glEnable(bgl.GL_BLEND) bgl.glColor4f(*col_gw_line_all) bgl.glLineWidth(1) bgl.glBegin(bgl.GL_LINE_STRIP) for i, co in enumerate(geowidget_top): #np_print(i) co = view3d_utils.location_3d_to_region_2d(region, rv3d, co) bgl.glVertex2f(*co) geowidget_top[i] = co bgl.glVertex2f(*geowidget_top[0]) bgl.glEnd() # drawing of geowidget - rest part: if geowidget_rest != None: for i, co in enumerate(geowidget_rest): co = Vector(co) co = co*fac geowidget_rest[i] = co geowidget_rest = rotate_graphic(geowidget_rest, ro_hor) geowidget_rest = rotate_graphic(geowidget_rest, q) geowidget_rest = translate_graphic(geowidget_rest, helploc) bgl.glEnable(bgl.GL_BLEND) bgl.glColor4f(*col_gw_line_all) bgl.glLineWidth(1) bgl.glBegin(bgl.GL_LINE_STRIP) for i, co in enumerate(geowidget_rest): #np_print(i) co = view3d_utils.location_3d_to_region_2d(region, rv3d, co) bgl.glVertex2f(*co) geowidget_rest[i] = co bgl.glVertex2f(*geowidget_rest[0]) bgl.glEnd() # ON-SCREEN DISPLAY OF DISTANCE BETWEEN TWO 3D POINTS: def display_distance_between_two_points(region, rv3d, p1_3d, p2_3d): size_num = addon_settings_graph('size_num') scale_dist = addon_settings_graph('scale_dist') suffix_dist = addon_settings_graph('suffix_dist') if type(p1_3d) is not Vector: p1_3d = Vector(p1_3d) if type(p2_3d) is not Vector: p2_3d = Vector(p2_3d) p1_2d = view3d_utils.location_3d_to_region_2d(region, rv3d, p1_3d) p2_2d = view3d_utils.location_3d_to_region_2d(region, rv3d, p2_3d) if p1_2d is None: p1_2d = 0.0, 0.0 p2_2d = 0.0, 0.0 def get_pts_mean(locs2d, max): res = 0 for i in locs2d: if i > max: res += max elif i > 0: res += i return res / 2 mean_x = get_pts_mean( (p1_2d[0], p2_2d[0]), region.width ) mean_y = get_pts_mean( (p1_2d[1], p2_2d[1]), region.height ) distloc = mean_x, mean_y dist_3d = (p2_3d - p1_3d).length dist_3d_rnd = abs(round(dist_3d, 2)) dist = str(dist_3d_rnd) dist_num = (p2_3d - p1_3d).length * scale_dist dist_num = abs(round(dist_num, 2)) if suffix_dist != 'None': dist = str(dist_num) + suffix_dist else: dist = str(dist_num) col_num_main = addon_settings_graph('col_num_main') col_num_shadow = addon_settings_graph('col_num_shadow') #np_print('dist = ', dist, 'distloc = ', distloc, 'dist_num = ', dist_num) if dist_num not in (0, 'a'): bgl.glColor4f(*col_num_shadow) font_id = 0 blf.size(font_id, size_num, 72) blf.position(font_id, (distloc[0]-1), (distloc[1]-1), 0) blf.draw(font_id, dist) bgl.glColor4f(*col_num_main) font_id = 0 blf.size(font_id, size_num, 72) blf.position(font_id, distloc[0], distloc[1], 0) blf.draw(font_id, dist) return (dist_num, dist) # LINE: def display_line_between_two_points(region, rv3d, p1_3d, p2_3d): bgl.glEnable(bgl.GL_BLEND) p1_2d = view3d_utils.location_3d_to_region_2d(region, rv3d, p1_3d) p2_2d = view3d_utils.location_3d_to_region_2d(region, rv3d, p2_3d) if p1_2d is None: p1_2d = (0.0, 0.0) p2_2d = (0.0, 0.0) col_line_main = addon_settings_graph('col_line_main') col_line_shadow = addon_settings_graph('col_line_shadow') bgl.glColor4f(*col_line_shadow) bgl.glLineWidth(1.4) bgl.glBegin(bgl.GL_LINE_STRIP) bgl.glVertex2f((p1_2d[0]-1),(p1_2d[1]-1)) bgl.glVertex2f((p2_2d[0]-1),(p2_2d[1]-1)) bgl.glEnd() bgl.glColor4f(*col_line_main) bgl.glLineWidth(1.4) bgl.glBegin(bgl.GL_LINE_STRIP) bgl.glVertex2f(*p1_2d) bgl.glVertex2f(*p2_2d) bgl.glEnd() bgl.glDisable(bgl.GL_BLEND) # BADGE: def display_cursor_badge(co2d, symbol, badge_mode, message_main, message_aux, aux_num, aux_str): display_badge = addon_settings_graph('display_badge') size_badge = addon_settings_graph('size_badge') col_bg_fill_main_run = addon_settings_graph('col_bg_fill_main_run') col_bg_fill_main_nav = addon_settings_graph('col_bg_fill_main_nav') col_bg_fill_aux = addon_settings_graph('col_bg_fill_aux') col_bg_fill_square = addon_settings_graph('col_bg_fill_square') col_bg_line_symbol = addon_settings_graph('col_bg_line_symbol') col_bg_font_main = addon_settings_graph('col_bg_font_main') col_bg_font_aux = addon_settings_graph('col_bg_font_aux') if badge_mode == 'RUN': col_bg_fill_main = col_bg_fill_main_run elif badge_mode == 'NAV': col_bg_fill_main = col_bg_fill_main_nav if display_badge: font_id = 0 square = [[17, 30], [17, 40], [27, 40], [27, 30]] rectangle = [[27, 30], [27, 40], [67, 40], [67, 30]] ipx = 29 ipy = 33 for co in square: co[0] = round((co[0] * size_badge), 0) - (size_badge * 10) + co2d[0] co[1] = round((co[1] * size_badge), 0) - (size_badge * 25) + co2d[1] for co in rectangle: co[0] = round((co[0] * size_badge), 0) - (size_badge * 10) + co2d[0] co[1] = round((co[1] * size_badge), 0) - (size_badge * 25) + co2d[1] for co in symbol: co[0] = round((co[0] * size_badge), 0) - (size_badge * 10) + co2d[0] co[1] = round((co[1] * size_badge), 0) - (size_badge * 25) + co2d[1] ipx = round((ipx * size_badge), 0) - (size_badge * 10) + co2d[0] ipy = round((ipy * size_badge), 0) - (size_badge * 25) + co2d[1] ipsize = int(round((6 * size_badge), 0)) bgl.glEnable(bgl.GL_BLEND) bgl.glColor4f(*col_bg_fill_square) bgl.glBegin(bgl.GL_TRIANGLE_FAN) for x, y in square: bgl.glVertex2f(x, y) bgl.glEnd() bgl.glColor4f(*col_bg_fill_main) bgl.glBegin(bgl.GL_TRIANGLE_FAN) for x, y in rectangle: bgl.glVertex2f(x, y) bgl.glEnd() bgl.glColor4f(*col_bg_line_symbol) bgl.glBegin(bgl.GL_LINE_STRIP) for x, y in symbol: bgl.glVertex2f(x, y) bgl.glEnd() bgl.glColor4f(*col_bg_font_main) blf.position(font_id, ipx, ipy, 0) blf.size(font_id, ipsize, 72) blf.draw(font_id, message_main) if message_aux != None: bgl.glColor4f(*col_bg_fill_aux) bgl.glBegin(bgl.GL_TRIANGLE_FAN) if aux_num == None and aux_str == None: rectangle = [[17, 30], [17, 40], [67, 40], [67, 30]] for co in rectangle: co[0] = round((co[0] * size_badge), 0) - (size_badge * 10) + co2d[0] co[1] = round((co[1] * size_badge), 0) - (size_badge * 25) + co2d[1] for x, y in rectangle: if aux_num == None and aux_str == None: bgl.glVertex2f(x, (y - (size_badge * 10))) np_print('111111111111') elif aux_num != None: bgl.glVertex2f(x, y - (size_badge*35)) np_print('222222222222') elif aux_str != None: bgl.glVertex2f(x, y - (size_badge*25)) np_print('3333333333333') bgl.glEnd() bgl.glColor4f(*col_bg_font_aux) if aux_num == None and aux_str == None: blf.position(font_id, ipx, ipy - (size_badge * 10), 0) elif aux_num != None: blf.position(font_id, ipx, ipy - (size_badge*35), 0) elif aux_str != None: blf.position(font_id, ipx, ipy - (size_badge*25), 0) blf.size(font_id, ipsize, 72) blf.draw(font_id, message_aux) if aux_num != None: bgl.glColor4f(*col_bg_font_aux) blf.position(font_id, ipx, int(ipy - size_badge*25), 0) blf.size(font_id, int(size_badge*24), 72) blf.draw(font_id, aux_num) if aux_str != None: bgl.glColor4f(*col_bg_font_aux) blf.position(font_id, ipx, int(ipy - size_badge*15), 0) blf.size(font_id, ipsize, 72) blf.draw(font_id, aux_num) ''' if step == 'continuous': bgl.glBegin(bgl.GL_LINE_STRIP) for x, y in dots1: bgl.glVertex2f(x, y) bgl.glEnd() bgl.glBegin(bgl.GL_LINE_STRIP) for x, y in dots2: bgl.glVertex2f(x, y) bgl.glEnd() bgl.glBegin(bgl.GL_LINE_STRIP) for x, y in dots3: bgl.glVertex2f(x, y) bgl.glEnd() ''' bgl.glDisable(bgl.GL_BLEND)