Add impress examples, format the import
This commit is contained in:
@@ -318,3 +318,50 @@ def check_transition(pptx_file, rules):
|
||||
return 0.
|
||||
else:
|
||||
return 0.
|
||||
|
||||
|
||||
def check_page_number_colors(pptx_file, rules):
|
||||
color = rules["color"]
|
||||
|
||||
def is_red(rgb_str, threshold=50):
|
||||
r, g, b = int(rgb_str[1:3], 16), int(rgb_str[3:5], 16), int(rgb_str[5:7], 16)
|
||||
return r > g + threshold and r > b + threshold
|
||||
|
||||
def is_blue(rgb_str, threshold=50):
|
||||
r, g, b = int(rgb_str[1:3], 16), int(rgb_str[3:5], 16), int(rgb_str[5:7], 16)
|
||||
return b > g + threshold and b > r + threshold
|
||||
|
||||
def is_green(rgb_str, threshold=50):
|
||||
r, g, b = int(rgb_str[1:3], 16), int(rgb_str[3:5], 16), int(rgb_str[5:7], 16)
|
||||
return g > r + threshold and g > b + threshold
|
||||
|
||||
def is_black(rgb_str, threshold=50):
|
||||
r, g, b = int(rgb_str[1:3], 16), int(rgb_str[3:5], 16), int(rgb_str[5:7], 16)
|
||||
return r < threshold and g < threshold and b < threshold
|
||||
|
||||
with zipfile.ZipFile(pptx_file, 'r') as zip_ref:
|
||||
slide_master_name = 'ppt/slideMasters/slideMaster1.xml'
|
||||
with zip_ref.open(slide_master_name) as slide_master_file:
|
||||
tree = ET.parse(slide_master_file)
|
||||
root = tree.getroot()
|
||||
|
||||
namespaces = {
|
||||
'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
|
||||
'p': 'http://schemas.openxmlformats.org/presentationml/2006/main',
|
||||
}
|
||||
|
||||
color_elems = root.findall('.//a:solidFill//a:srgbClr', namespaces)
|
||||
slides_color_val = color_elems[-2].get('val')
|
||||
|
||||
if slides_color_val is None:
|
||||
return 0
|
||||
elif color == "red" and not is_red(slides_color_val):
|
||||
return 0
|
||||
elif color == "blue" and not is_blue(slides_color_val):
|
||||
return 0
|
||||
elif color == "green" and not is_green(slides_color_val):
|
||||
return 0
|
||||
elif color == "black" and not is_black(slides_color_val):
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
Reference in New Issue
Block a user