update libreoffice impress eval examples
This commit is contained in:
@@ -96,6 +96,38 @@ def check_slide_numbers_color(pptx_file_path):
|
||||
print(font_color)
|
||||
return 1 if font_color is not None and is_red_color(font_color) else 0
|
||||
|
||||
# import numpy as np
|
||||
# from PIL import Image
|
||||
# from skimage.metrics import structural_similarity as ssim
|
||||
|
||||
# def compare_images(image1_path, image2_path):
|
||||
# # You would call this function with the paths to the two images you want to compare:
|
||||
# # score = compare_images('path_to_image1', 'path_to_image2')
|
||||
# # print("Similarity score:", score)
|
||||
|
||||
# if not image1_path or not image2_path:
|
||||
# return 0
|
||||
|
||||
# # Open the images and convert to grayscale
|
||||
# image1 = Image.open(image1_path).convert('L')
|
||||
# image2 = Image.open(image2_path).convert('L')
|
||||
|
||||
# # Resize images to the smaller one's size for comparison
|
||||
# image1_size = image1.size
|
||||
# image2_size = image2.size
|
||||
# new_size = min(image1_size, image2_size)
|
||||
|
||||
# image1 = image1.resize(new_size, Image.Resampling.LANCZOS)
|
||||
# image2 = image2.resize(new_size, Image.Resampling.LANCZOS)
|
||||
|
||||
# # Convert images to numpy arrays
|
||||
# image1_array = np.array(image1)
|
||||
# image2_array = np.array(image2)
|
||||
|
||||
# # Calculate SSIM between two images
|
||||
# similarity_index = ssim(image1_array, image2_array)
|
||||
|
||||
# return similarity_index
|
||||
|
||||
def compare_pptx_files(file1_path, file2_path, **options):
|
||||
# todo: not strictly match since not all information is compared because we cannot get the info through pptx
|
||||
@@ -114,49 +146,50 @@ def compare_pptx_files(file1_path, file2_path, **options):
|
||||
|
||||
# compare the number of slides
|
||||
if len(prs1.slides) != len(prs2.slides) and examine_number_of_slides:
|
||||
return False
|
||||
return 0
|
||||
|
||||
# compare the content of each slide
|
||||
for slide1, slide2 in zip(prs1.slides, prs2.slides):
|
||||
|
||||
# check if the shapes are the same
|
||||
for shape1, shape2 in zip(slide1.shapes, slide2.shapes):
|
||||
if (
|
||||
shape1.left != shape2.left or shape1.top != shape2.top or shape1.width != shape2.width or shape1.height != shape2.height) and examine_shape:
|
||||
return False
|
||||
|
||||
return 0
|
||||
|
||||
if hasattr(shape1, "text") and hasattr(shape2, "text"):
|
||||
if shape1.text != shape2.text and examine_text:
|
||||
return False
|
||||
return 0
|
||||
|
||||
# check if the paragraphs are the same
|
||||
for para1, para2 in zip(shape1.text_frame.paragraphs, shape2.text_frame.paragraphs):
|
||||
# check if the runs are the same
|
||||
for run1, run2 in zip(para1.runs, para2.runs):
|
||||
if run1.text != run2.text and examine_text:
|
||||
return False
|
||||
return 0
|
||||
|
||||
# check if the font properties are the same
|
||||
if run1.font.name != run2.font.name and examine_font_name:
|
||||
return False
|
||||
return 0
|
||||
|
||||
if run1.font.size != run2.font.size and examine_font_size:
|
||||
return False
|
||||
return 0
|
||||
|
||||
if run1.font.bold != run2.font.bold and examine_font_bold:
|
||||
return False
|
||||
return 0
|
||||
|
||||
if run1.font.italic != run2.font.italic and examine_font_italic:
|
||||
return False
|
||||
return 0
|
||||
|
||||
if run1.font.color.rgb != run2.font.color.rgb and examine_color_rgb:
|
||||
return False
|
||||
return 0
|
||||
|
||||
if run1.font.underline != run2.font.underline and examine_font_underline:
|
||||
return False
|
||||
return 0
|
||||
|
||||
# fixme: Actually there are more properties to be compared, but we cannot get them through pptx
|
||||
|
||||
return True
|
||||
return 1
|
||||
|
||||
|
||||
def check_strikethrough(pptx_path, rules):
|
||||
@@ -220,15 +253,20 @@ def check_left_panel(accessibility_tree):
|
||||
|
||||
root = ET.fromstring(accessibility_tree)
|
||||
|
||||
for root_pane in root.iter('root-pane'):
|
||||
for panel in root_pane.iter('panel'):
|
||||
for split_pane in panel.iter('split-pane'):
|
||||
# Get the left panel
|
||||
if split_pane.attrib.get("{{{}}}parentcoord".format(namespaces['cp'])) == "(0, 0)":
|
||||
# Get the visible attribute
|
||||
visible = split_pane.attrib.get("{{{}}}visible".format(namespaces['st']))
|
||||
if visible:
|
||||
# decide if it is left panel
|
||||
return 1.
|
||||
for root_pane in root.iter('root-pane'):
|
||||
for split_pane in root_pane.iter('split-pane'):
|
||||
for panel in split_pane.iter('panel'):
|
||||
for scroll_panel in panel.iter('scroll-pane'):
|
||||
for document_frame in scroll_panel.iter('document-frame'):
|
||||
# Get the left panel
|
||||
panel_name = document_frame.get("name")
|
||||
# visible = scroll_bar.attrib.get(f"{{{namespaces['st']}}}visible")
|
||||
if panel_name == "Slides View":
|
||||
# Left panel is open
|
||||
return 1.0
|
||||
|
||||
return 0.
|
||||
# Left panel is not open
|
||||
return 0.0
|
||||
|
||||
|
||||
# print(compare_pptx_files("D:\\NJU\\HKUNLP\\Desktop-Env\\cache\\bf4e9888-f10f-47af-8dba-76413038b73c\\4.3-Template_4.29.2016.pptx", "D:\\NJU\HKUNLP\\Desktop-Env\\cache\\bf4e9888-f10f-47af-8dba-76413038b73c\\4.3-Template_4.29.2016_Gold.pptx"))
|
||||
Reference in New Issue
Block a user