Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-05-29 18:55:06 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-29 18:55:06 +0400
commitd73529b29631c74f1954a452577e8f16905630b6 (patch)
tree80148830967d63c906dc0709213fe9ae8999640a /release/scripts/startup/bl_ui/properties_render.py
parent39f0fbef95894031c9122aa86bcd6eb5edf834f5 (diff)
scene render dimension panal: avoid re-creating the framerate string on every redraw, cache the string for reuse.
also remove redundant returns from my last commit.
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_render.py')
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py60
1 files changed, 44 insertions, 16 deletions
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index c8cc433d3af..904667eb976 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -76,6 +76,49 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
bl_label = "Dimensions"
COMPAT_ENGINES = {'BLENDER_RENDER'}
+ _frame_rate_args_prev = None
+ _preset_class = None
+ @staticmethod
+ def _draw_framerate_label(*args):
+ # avoids re-creating text string each draw
+ if RENDER_PT_dimensions._frame_rate_args_prev == args:
+ return RENDER_PT_dimensions._frame_rate_ret
+
+ fps, fps_base, preset_label = args
+
+ if fps_base == 1.0:
+ fps_rate = round(fps)
+ else:
+ fps_rate = round(fps / fps_base, 2)
+
+ # TODO: Change the following to iterate over existing presets
+ custom_framerate = (fps_rate not in {23.98, 24, 25, 29.97, 30, 50, 59.94, 60})
+
+ if custom_framerate is True:
+ fps_label_text = "Custom (%r fps)" % fps_rate
+ show_framerate = True
+ else:
+ fps_label_text = "%r fps" % fps_rate
+ show_framerate = (preset_label == "Custom")
+
+ RENDER_PT_dimensions._frame_rate_args_prev = args
+ RENDER_PT_dimensions._frame_rate_ret = args = (fps_label_text, show_framerate)
+ return args
+
+ @staticmethod
+ def draw_framerate(sub, rd):
+ if RENDER_PT_dimensions._preset_class is None:
+ RENDER_PT_dimensions._preset_class = bpy.types.RENDER_MT_framerate_presets
+
+ args = rd.fps, rd.fps_base, RENDER_PT_dimensions._preset_class.bl_label
+ fps_label_text, show_framerate = RENDER_PT_dimensions._draw_framerate_label(*args)
+
+ sub.menu("RENDER_MT_framerate_presets", text=fps_label_text)
+
+ if show_framerate:
+ sub.prop(rd, "fps")
+ sub.prop(rd, "fps_base", text="/")
+
def draw(self, context):
layout = self.layout
@@ -114,24 +157,9 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
sub.prop(scene, "frame_step")
sub.label(text="Frame Rate:")
- if rd.fps_base == 1:
- fps_rate = round(rd.fps / rd.fps_base)
- else:
- fps_rate = round(rd.fps / rd.fps_base, 2)
- # TODO: Change the following to iterate over existing presets
- custom_framerate = (fps_rate not in {23.98, 24, 25, 29.97, 30, 50, 59.94, 60})
+ self.draw_framerate(sub, rd)
- if custom_framerate is True:
- fps_label_text = "Custom (" + str(fps_rate) + " fps)"
- else:
- fps_label_text = str(fps_rate) + " fps"
-
- sub.menu("RENDER_MT_framerate_presets", text=fps_label_text)
-
- if custom_framerate or (bpy.types.RENDER_MT_framerate_presets.bl_label == "Custom"):
- sub.prop(rd, "fps")
- sub.prop(rd, "fps_base", text="/")
subrow = sub.row(align=True)
subrow.label(text="Time Remapping:")
subrow = sub.row(align=True)