attachment
attachment
attachment
attachment

Need a ppt with both topics need both as seperate ppts merged into a single ppt with seperate headings for both persons need self explanatory picture in ppt no reference needed just an awareness ppt to college students mentioned in poster please prepare a ppt with about 10 pages in total

analyse_media
analyse_media
Reading File
Reading File
Running Command

mkdir -p /tmp/workspace/noble-womens-ppt && ls /tmp/workspace/noble-womens-ppt/

Writing File

~/noble-womens-ppt/create_ppt.py

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
import io

prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank_layout = prs.slide_layouts[6]

# ─── COLOR PALETTE ────────────────────────────────────────────────────────────
PINK_DARK   = RGBColor(0xB5, 0x25, 0x6E)   # deep pink / maroon
PINK_MID    = RGBColor(0xE8, 0x55, 0x9B)   # bright pink
PINK_LIGHT  = RGBColor(0xFF, 0xE4, 0xF0)   # very pale pink
PURPLE      = RGBColor(0x6A, 0x1B, 0x9A)   # purple
WHITE       = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TEXT   = RGBColor(0x2D, 0x2D, 0x2D)
TEAL        = RGBColor(0x00, 0x89, 0x8A)

BLUE_DARK   = RGBColor(0x1A, 0x23, 0x7E)   # dark navy for breast cancer section
ROSE        = RGBColor(0xE9, 0x1E, 0x63)
ROSE_LIGHT  = RGBColor(0xFC, 0xE4, 0xEC)
ROSE_MID    = RGBColor(0xF4, 0x8F, 0xB1)


def add_rect(slide, x, y, w, h, fill_rgb, transparency=0):
    from pptx.util import Pt
    from pptx.oxml.ns import qn
    from lxml import etree
    shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_rgb
    shape.line.fill.background()
    if transparency > 0:
        sp = shape._element
        spPr = sp.find(qn('p:spPr'))
        solidFill = spPr.find('.//' + qn('a:solidFill'))
        if solidFill is not None:
            srgb = solidFill.find(qn('a:srgbClr'))
            if srgb is not None:
                alpha = etree.SubElement(srgb, qn('a:alpha'))
                alpha.set('val', str(int((1 - transparency) * 100000)))
    return shape


def add_text(slide, text, x, y, w, h, font_size=18, bold=False, color=DARK_TEXT,
             align=PP_ALIGN.LEFT, italic=False, font_name="Calibri"):
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.margin_left = Pt(4)
    tf.margin_right = Pt(4)
    tf.margin_top = Pt(2)
    tf.margin_bottom = Pt(2)
    p = tf.paragraphs[0]
    p.alignment = align
    run = p.add_run()
    run.text = text
    run.font.size = Pt(font_size)
    run.font.bold = bold
    run.font.italic = italic
    run.font.color.rgb = color
    run.font.name = font_name
    return tb


def add_multiline_text(slide, lines, x, y, w, h, font_size=16, bold=False,
                       color=DARK_TEXT, align=PP_ALIGN.LEFT, font_name="Calibri",
                       line_spacing=None):
    tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
    tf = tb.text_frame
    tf.word_wrap = True
    tf.margin_left = Pt(4)
    tf.margin_right = Pt(4)
    tf.margin_top = Pt(2)
    tf.margin_bottom = Pt(2)
    for i, line in enumerate(lines):
        if i == 0:
            p = tf.paragraphs[0]
        else:
            p = tf.add_paragraph()
        p.alignment = align
        if line_spacing:
            p.line_spacing = Pt(line_spacing)
        run = p.add_run()
        run.text = line
        run.font.size = Pt(font_size)
        run.font.bold = bold
        run.font.color.rgb = color
        run.font.name = font_name
    return tb


# ══════════════════════════════════════════════════════════════════════════════
#  PART 1 — MENSTRUAL CUP AWARENESS  (Slides 1–5)
#  Resource Person: Sariga MG, 3rd Year MBBS, GMC Manjeri
# ══════════════════════════════════════════════════════════════════════════════

# ── Slide 1: Title slide for Part 1 ──────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
# Background gradient-like effect using overlapping rectangles
add_rect(slide, 0, 0, 13.333, 7.5, PINK_LIGHT)
add_rect(slide, 0, 0, 13.333, 2.2, PINK_DARK)
add_rect(slide, 0, 5.5, 13.333, 2.0, PURPLE)

# Top header
add_text(slide, "Women Development Cell  •  Noble Women's College, Manjeri",
         0.3, 0.2, 12.7, 0.5, font_size=13, bold=False, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "In association with Govt Medical College, Manjeri",
         0.3, 0.65, 12.7, 0.4, font_size=11, bold=False, color=PINK_MID, align=PP_ALIGN.CENTER, italic=True)

# Divider line
add_rect(slide, 1.5, 1.2, 10.3, 0.04, PINK_MID)

# PART badge
add_rect(slide, 4.5, 1.6, 4.3, 0.55, PURPLE)
add_text(slide, "PART  1  OF  2", 4.5, 1.6, 4.3, 0.55,
         font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

# Main title
add_text(slide, "Breaking the", 1.5, 2.25, 10.3, 0.8,
         font_size=38, bold=False, color=PINK_DARK, align=PP_ALIGN.CENTER, italic=True, font_name="Georgia")
add_text(slide, "TABOO", 1.5, 2.95, 10.3, 1.3,
         font_size=80, bold=True, color=PURPLE, align=PP_ALIGN.CENTER, font_name="Georgia")

# Subtitle banner
add_rect(slide, 2.0, 4.4, 9.3, 0.8, PINK_MID)
add_text(slide, "🌸  MENSTRUAL CUP AWARENESS SESSION", 2.0, 4.4, 9.3, 0.8,
         font_size=20, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

# Bottom section
add_text(slide, "Resource Person: Sariga MG", 0.5, 5.6, 7.0, 0.5,
         font_size=18, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(slide, "3rd Year MBBS Student  •  GMC Manjeri", 0.5, 6.05, 7.0, 0.45,
         font_size=13, bold=False, color=PINK_LIGHT, align=PP_ALIGN.LEFT, italic=True)
add_text(slide, "6 August 2026  |  2 PM  |  Auditorium", 0.5, 6.5, 7.0, 0.45,
         font_size=12, bold=False, color=PINK_LIGHT, align=PP_ALIGN.LEFT)
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
         6.5, 5.7, 6.5, 0.9, font_size=14, bold=False, color=WHITE,
         align=PP_ALIGN.RIGHT, italic=True)

# ── Slide 2: What is a Menstrual Cup? ────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, PINK_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.25, PURPLE)
add_rect(slide, 0, 6.8, 13.333, 0.7, PINK_MID)

add_text(slide, "PART 1  —  MENSTRUAL CUP AWARENESS",
         0.3, 0.08, 12.7, 0.4, font_size=11, bold=False, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "What is a Menstrual Cup?", 0.3, 0.45, 12.7, 0.75,
         font_size=34, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

# Left column — illustration placeholder with colored box
add_rect(slide, 0.4, 1.45, 5.0, 5.0, RGBColor(0xF8, 0xBB, 0xD9))
# Cup shape drawn with shapes
add_rect(slide, 1.8, 1.8, 2.2, 0.15, PINK_MID)   # top rim
add_rect(slide, 1.9, 1.95, 2.0, 3.0, PINK_DARK)  # cup body
add_rect(slide, 2.25, 4.95, 1.3, 0.6, PURPLE)    # stem
add_text(slide, "🩸", 1.5, 2.5, 3.0, 1.5, font_size=60, align=PP_ALIGN.CENTER)
add_text(slide, "Menstrual Cup", 0.4, 6.1, 5.0, 0.5,
         font_size=13, bold=True, color=PURPLE, align=PP_ALIGN.CENTER)

# Right column — content
bullets = [
    ("🔹", "A small, flexible, funnel-shaped cup made of medical-grade silicone, rubber, or latex"),
    ("🔹", "Inserted into the vagina to collect menstrual blood — not absorb it"),
    ("🔹", "Can hold more blood than a pad or tampon (up to 3× more)"),
    ("🔹", "Reusable for 5–10 years with proper care"),
    ("🔹", "Available in various sizes (Small / Large / Teen sizes)"),
    ("🔹", "FDA-approved and widely recommended by gynaecologists"),
]
add_text(slide, "Key Facts", 5.8, 1.4, 7.1, 0.55,
         font_size=20, bold=True, color=PURPLE, align=PP_ALIGN.LEFT)
add_rect(slide, 5.8, 1.95, 7.1, 0.05, PINK_MID)
y = 2.1
for icon, fact in bullets:
    add_text(slide, f"{icon}  {fact}", 5.9, y, 7.0, 0.65,
             font_size=14, color=DARK_TEXT)
    y += 0.68
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)

# ── Slide 3: Why Choose a Menstrual Cup? Benefits ────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF0, 0xF8))
add_rect(slide, 0, 0, 13.333, 1.3, PINK_DARK)
add_rect(slide, 0, 6.8, 13.333, 0.7, PURPLE)

add_text(slide, "PART 1  —  MENSTRUAL CUP AWARENESS",
         0.3, 0.05, 12.7, 0.4, font_size=11, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "Why Choose a Menstrual Cup?", 0.3, 0.48, 12.7, 0.78,
         font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

benefits = [
    ("🌿", "Eco-Friendly", "No monthly waste — one cup replaces ~2,400 pads or tampons over its lifetime"),
    ("💰", "Cost-Saving", "One-time cost of ₹300–800 vs. monthly spending on disposables"),
    ("🏃", "Active Lifestyle", "Swim, exercise, sleep — 12-hour leak-free protection"),
    ("❤️", "Healthier Choice", "No bleach, dioxins, or absorbency chemicals touching your body"),
    ("🌍", "Zero Period Poverty Risk", "Once purchased, no recurring expense — great for students"),
    ("🔒", "Safe & Reliable", "Medical-grade silicone — no TSS (Toxic Shock Syndrome) risk"),
]

cols = [(0.3, 1.4), (4.6, 1.4), (8.9, 1.4),
        (0.3, 4.1), (4.6, 4.1), (8.9, 4.1)]

for i, ((bx, by), (ico, title, desc)) in enumerate(zip(cols, benefits)):
    add_rect(slide, bx, by, 3.9, 2.3, WHITE)
    add_rect(slide, bx, by, 3.9, 0.6, PINK_MID)
    add_text(slide, f"{ico}  {title}", bx+0.1, by+0.08, 3.7, 0.5,
             font_size=15, bold=True, color=WHITE)
    add_text(slide, desc, bx+0.12, by+0.7, 3.65, 1.5,
             font_size=12, color=DARK_TEXT)

add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)

# ── Slide 4: How to Use a Menstrual Cup ──────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, PINK_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.3, PURPLE)
add_rect(slide, 0, 6.8, 13.333, 0.7, PINK_DARK)

add_text(slide, "PART 1  —  MENSTRUAL CUP AWARENESS",
         0.3, 0.05, 12.7, 0.4, font_size=11, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "How to Use a Menstrual Cup", 0.3, 0.48, 12.7, 0.78,
         font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

steps = [
    ("1", "WASH HANDS", "Wash hands thoroughly with soap and water before handling the cup."),
    ("2", "FOLD THE CUP", "Use C-fold, Punch-down fold, or 7-fold — choose what is comfortable."),
    ("3", "INSERT GENTLY", "Squat or raise one leg. Insert the folded cup into the vagina; it will open and seal."),
    ("4", "WEAR UP TO 12 HRS", "Once seated correctly, you should feel nothing. Wear for up to 12 hours."),
    ("5", "REMOVE & EMPTY", "Pinch the base gently to break the seal, pull out and empty into the toilet."),
    ("6", "RINSE & REINSERT", "Rinse with clean water and reinsert. At end of cycle, sterilise by boiling."),
]

for i, (num, title, desc) in enumerate(steps):
    col = i % 2
    row = i // 2
    bx = 0.35 + col * 6.5
    by = 1.5 + row * 1.7
    add_rect(slide, bx, by, 0.7, 1.4, PINK_DARK)
    add_text(slide, num, bx, by+0.28, 0.7, 0.8,
             font_size=26, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
    add_rect(slide, bx+0.7, by, 5.8, 1.4, WHITE)
    add_text(slide, title, bx+0.85, by+0.08, 5.5, 0.45,
             font_size=14, bold=True, color=PURPLE)
    add_text(slide, desc, bx+0.85, by+0.52, 5.5, 0.82,
             font_size=12, color=DARK_TEXT)

add_text(slide, "💡 Tip: It may take 2–3 cycles to get comfortable — that is completely normal!",
         0.5, 6.55, 12.3, 0.45, font_size=13, bold=True, color=PINK_DARK, align=PP_ALIGN.CENTER)
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)

# ── Slide 5: Common Myths vs Facts ───────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF0, 0xF8))
add_rect(slide, 0, 0, 13.333, 1.3, PINK_MID)
add_rect(slide, 0, 6.8, 13.333, 0.7, PURPLE)

add_text(slide, "PART 1  —  MENSTRUAL CUP AWARENESS",
         0.3, 0.05, 12.7, 0.4, font_size=11, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Myths  vs  Facts", 0.3, 0.45, 12.7, 0.78,
         font_size=34, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

# Column headers
add_rect(slide, 0.3, 1.4, 6.0, 0.55, RGBColor(0xC6, 0x28, 0x28))
add_text(slide, "❌  MYTH", 0.3, 1.4, 6.0, 0.55,
         font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, 6.8, 1.4, 6.2, 0.55, RGBColor(0x2E, 0x7D, 0x32))
add_text(slide, "✅  FACT", 6.8, 1.4, 6.2, 0.55,
         font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

myths_facts = [
    ("It will hurt or is uncomfortable", "With correct sizing and insertion, it is pain-free"),
    ("It can get lost inside the body", "The vaginal canal has an end — the cup cannot go further"),
    ("Only for married women", "Any menstruating person can use it, regardless of status"),
    ("It affects virginity", "Virginity is a social concept — cups do not change anatomy"),
    ("It is unhygienic", "Medical-grade silicone is non-porous and fully sterilisable"),
]

for i, (myth, fact) in enumerate(myths_facts):
    by = 2.1 + i * 0.88
    bg = PINK_LIGHT if i % 2 == 0 else RGBColor(0xFF, 0xD6, 0xE8)
    add_rect(slide, 0.3, by, 6.0, 0.82, bg)
    add_text(slide, myth, 0.45, by+0.08, 5.7, 0.68, font_size=13, color=RGBColor(0xC6, 0x28, 0x28))
    bg2 = RGBColor(0xE8, 0xF5, 0xE9) if i % 2 == 0 else RGBColor(0xC8, 0xE6, 0xC9)
    add_rect(slide, 6.8, by, 6.2, 0.82, bg2)
    add_text(slide, fact, 6.95, by+0.08, 5.9, 0.68, font_size=13, color=RGBColor(0x1B, 0x5E, 0x20))

add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)


# ══════════════════════════════════════════════════════════════════════════════
#  PART 2 — BREAST CANCER AWARENESS  (Slides 6–10)
#  Resource Person: Keerthana SP, 3rd Year MBBS, GMC Manjeri
# ══════════════════════════════════════════════════════════════════════════════

# ── Slide 6: Title slide for Part 2 ──────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, ROSE_LIGHT)
add_rect(slide, 0, 0, 13.333, 2.2, BLUE_DARK)
add_rect(slide, 0, 5.5, 13.333, 2.0, ROSE)

add_text(slide, "Women Development Cell  •  Noble Women's College, Manjeri",
         0.3, 0.2, 12.7, 0.5, font_size=13, bold=False, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "In association with Govt Medical College, Manjeri",
         0.3, 0.65, 12.7, 0.4, font_size=11, bold=False, color=ROSE_MID, align=PP_ALIGN.CENTER, italic=True)
add_rect(slide, 1.5, 1.2, 10.3, 0.04, ROSE_MID)

add_rect(slide, 4.5, 1.6, 4.3, 0.55, ROSE)
add_text(slide, "PART  2  OF  2", 4.5, 1.6, 4.3, 0.55,
         font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

add_text(slide, "Breast Cancer", 1.5, 2.25, 10.3, 1.0,
         font_size=72, bold=True, color=ROSE, align=PP_ALIGN.CENTER, font_name="Georgia")
add_text(slide, "Awareness  &  Self Examination Workshop", 1.5, 3.3, 10.3, 0.9,
         font_size=28, bold=True, color=BLUE_DARK, align=PP_ALIGN.CENTER, font_name="Georgia")

add_rect(slide, 2.5, 4.35, 8.3, 0.75, ROSE)
add_text(slide, "🎗️  KNOW YOUR BODY. TAKE CHARGE OF YOUR HEALTH.", 2.5, 4.35, 8.3, 0.75,
         font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)

add_text(slide, "Resource Person: Keerthana SP", 0.5, 5.62, 7.0, 0.5,
         font_size=18, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(slide, "3rd Year MBBS Student  •  GMC Manjeri", 0.5, 6.07, 7.0, 0.45,
         font_size=13, bold=False, color=ROSE_LIGHT, align=PP_ALIGN.LEFT, italic=True)
add_text(slide, "6 August 2026  |  2 PM  |  Auditorium", 0.5, 6.52, 7.0, 0.45,
         font_size=12, bold=False, color=ROSE_LIGHT, align=PP_ALIGN.LEFT)
add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
         6.5, 5.75, 6.5, 0.85, font_size=14, bold=False, color=WHITE,
         align=PP_ALIGN.RIGHT, italic=True)

# ── Slide 7: Understanding Breast Cancer ─────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, ROSE_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.3, BLUE_DARK)
add_rect(slide, 0, 6.8, 13.333, 0.7, ROSE)

add_text(slide, "PART 2  —  BREAST CANCER AWARENESS",
         0.3, 0.05, 12.7, 0.4, font_size=11, color=ROSE_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "Understanding Breast Cancer", 0.3, 0.45, 12.7, 0.78,
         font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

# Left illustration column
add_rect(slide, 0.3, 1.45, 5.0, 5.0, RGBColor(0xFC, 0xE4, 0xEC))
add_text(slide, "🎗️", 0.3, 2.2, 5.0, 2.0, font_size=100, align=PP_ALIGN.CENTER)
add_text(slide, "1 in 28 Indian women\nwill develop breast cancer\nin their lifetime",
         0.3, 4.4, 5.0, 1.5, font_size=13, bold=True, color=ROSE,
         align=PP_ALIGN.CENTER)

# Right content column
bullets_bc = [
    ("🔸", "Breast cancer is the most common cancer in Indian women (28% of all cancers)"),
    ("🔸", "It can occur in both women AND men, though it is rare in men"),
    ("🔸", "Starts as a malignant (cancerous) tumour in the cells of the breast"),
    ("🔸", "Early detection increases 5-year survival rate to over 90%"),
    ("🔸", "Average age of onset in India is 10 years younger than Western countries"),
    ("🔸", "Most cases have NO family history — awareness matters for everyone"),
]
add_text(slide, "Key Facts You Need to Know", 5.8, 1.4, 7.1, 0.55,
         font_size=19, bold=True, color=BLUE_DARK, align=PP_ALIGN.LEFT)
add_rect(slide, 5.8, 1.95, 7.1, 0.05, ROSE)
y = 2.1
for icon, fact in bullets_bc:
    add_text(slide, f"{icon}  {fact}", 5.9, y, 7.0, 0.65, font_size=14, color=DARK_TEXT)
    y += 0.7
add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)

# ── Slide 8: Warning Signs & Risk Factors ────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF8, 0xF9))
add_rect(slide, 0, 0, 13.333, 1.3, ROSE)
add_rect(slide, 0, 6.8, 13.333, 0.7, BLUE_DARK)

add_text(slide, "PART 2  —  BREAST CANCER AWARENESS",
         0.3, 0.05, 12.7, 0.4, font_size=11, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Warning Signs & Risk Factors", 0.3, 0.45, 12.7, 0.78,
         font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

# Warning Signs (left)
add_rect(slide, 0.3, 1.4, 6.2, 0.55, RGBColor(0xC6, 0x28, 0x28))
add_text(slide, "⚠️  WARNING SIGNS", 0.3, 1.4, 6.2, 0.55,
         font_size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
signs = [
    "🔴  A new lump or thickening in the breast or underarm",
    "🔴  Change in breast size, shape, or appearance",
    "🔴  Dimpling or puckering of breast skin",
    "🔴  Nipple inversion (turning inward) or discharge",
    "🔴  Redness, soreness, rash or swelling on breast skin",
    "🔴  Unexplained pain in breast or nipple area",
]
for i, sign in enumerate(signs):
    bg = RGBColor(0xFF, 0xEB, 0xEE) if i % 2 == 0 else WHITE
    add_rect(slide, 0.3, 2.05+i*0.7, 6.2, 0.66, bg)
    add_text(slide, sign, 0.45, 2.08+i*0.7, 5.9, 0.6, font_size=13, color=DARK_TEXT)

# Risk Factors (right)
add_rect(slide, 6.9, 1.4, 6.1, 0.55, ROSE)
add_text(slide, "📋  RISK FACTORS", 6.9, 1.4, 6.1, 0.55,
         font_size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
risks = [
    "🟣  Female gender and age above 40 years",
    "🟣  Family history of breast or ovarian cancer",
    "🟣  Dense breast tissue",
    "🟣  Obesity and sedentary lifestyle",
    "🟣  Alcohol consumption and smoking",
    "🟣  Hormone therapy or early periods / late menopause",
]
for i, risk in enumerate(risks):
    bg = ROSE_LIGHT if i % 2 == 0 else WHITE
    add_rect(slide, 6.9, 2.05+i*0.7, 6.1, 0.66, bg)
    add_text(slide, risk, 7.05, 2.08+i*0.7, 5.85, 0.6, font_size=13, color=DARK_TEXT)

add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)

# ── Slide 9: Breast Self Examination (BSE) ───────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, ROSE_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.3, BLUE_DARK)
add_rect(slide, 0, 6.8, 13.333, 0.7, ROSE)

add_text(slide, "PART 2  —  BREAST CANCER AWARENESS",
         0.3, 0.05, 12.7, 0.4, font_size=11, color=ROSE_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "Breast Self-Examination (BSE) — Step by Step", 0.3, 0.45, 12.7, 0.78,
         font_size=28, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")

# Introductory note
add_rect(slide, 0.3, 1.4, 12.7, 0.55, RGBColor(0xFF, 0xD6, 0xE8))
add_text(slide, "📅  Perform BSE once a month — best done 3–5 days after your period ends (when breasts are less tender)",
         0.35, 1.42, 12.6, 0.5, font_size=13, bold=True, color=BLUE_DARK, align=PP_ALIGN.LEFT)

bse_steps = [
    ("1", "IN FRONT OF A MIRROR", "Stand with arms at sides. Look for any changes in breast shape, size, skin texture, or nipple direction."),
    ("2", "ARMS RAISED", "Raise both arms overhead. Check for the same changes on both sides and underneath the breast."),
    ("3", "NIPPLE CHECK", "Gently squeeze each nipple. Note any discharge (fluid coming out) — clear, milky, or bloody."),
    ("4", "LYING DOWN — RIGHT BREAST", "Lie flat; place right arm behind head. Use left hand fingers (flat, circular motion) to feel the entire right breast."),
    ("5", "LYING DOWN — LEFT BREAST", "Repeat with left arm behind head using right hand. Cover the full breast in an up-down strip pattern."),
    ("6", "FEEL THE ARMPIT", "Feel your armpit area as well — lymph nodes here can swell early if cancer spreads."),
]

for i, (num, title, desc) in enumerate(bse_steps):
    col = i % 3
    row = i // 3
    bx = 0.3 + col * 4.35
    by = 2.1 + row * 2.1
    add_rect(slide, bx, by, 0.65, 1.9, ROSE)
    add_text(slide, num, bx, by+0.55, 0.65, 0.8,
             font_size=22, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
    add_rect(slide, bx+0.65, by, 3.6, 1.9, WHITE)
    add_text(slide, title, bx+0.75, by+0.05, 3.4, 0.45,
             font_size=11, bold=True, color=ROSE)
    add_text(slide, desc, bx+0.75, by+0.52, 3.4, 1.3,
             font_size=11, color=DARK_TEXT)

add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
         0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)

# ── Slide 10: Closing / Action Slide (Both Topics) ───────────────────────────
slide = prs.slides.add_slide(blank_layout)
# Split background — left pink, right rose
add_rect(slide, 0, 0, 6.67, 7.5, PURPLE)
add_rect(slide, 6.67, 0, 6.67, 7.5, BLUE_DARK)
# centre accent
add_rect(slide, 6.2, 0, 0.93, 7.5, RGBColor(0xFF, 0xFF, 0xFF))

# Left side — Menstrual Cup takeaways
add_rect(slide, 0.2, 0.3, 5.7, 0.75, PINK_MID)
add_text(slide, "🩸  Menstrual Cup Awareness", 0.2, 0.3, 5.7, 0.75,
         font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
takeaways_mc = [
    "✔  A safe, eco-friendly period solution",
    "✔  Cost-effective — invest once, use for years",
    "✔  Holds more, leaks less — perfect for active days",
    "✔  Medical-grade silicone — body safe",
    "✔  Ask your gynaecologist for the right size",
]
for i, t in enumerate(takeaways_mc):
    add_rect(slide, 0.2, 1.2+i*0.95, 5.7, 0.82, RGBColor(0x6A, 0x1B, 0x9A) if i%2==0 else RGBColor(0x7B, 0x1F, 0xA2))
    add_text(slide, t, 0.35, 1.25+i*0.95, 5.4, 0.7, font_size=13, color=WHITE)
add_text(slide, "Presented by: Sariga MG, 3rd Yr MBBS, GMC Manjeri",
         0.2, 6.4, 5.7, 0.5, font_size=11, italic=True, color=PINK_LIGHT, align=PP_ALIGN.CENTER)

# Right side — Breast Cancer takeaways
add_rect(slide, 7.43, 0.3, 5.7, 0.75, ROSE)
add_text(slide, "🎗️  Breast Cancer Awareness", 7.43, 0.3, 5.7, 0.75,
         font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
takeaways_bc = [
    "✔  1 in 28 Indian women — know your risk",
    "✔  Early detection = 90%+ survival rate",
    "✔  Perform BSE every month, 3–5 days post-period",
    "✔  Mammogram after age 40 (or earlier if high risk)",
    "✔  See a doctor if you notice any warning signs",
]
for i, t in enumerate(takeaways_bc):
    bg = RGBColor(0xAD, 0x14, 0x57) if i%2==0 else RGBColor(0xC2, 0x18, 0x5B)
    add_rect(slide, 7.43, 1.2+i*0.95, 5.7, 0.82, bg)
    add_text(slide, t, 7.58, 1.25+i*0.95, 5.4, 0.7, font_size=13, color=WHITE)
add_text(slide, "Presented by: Keerthana SP, 3rd Yr MBBS, GMC Manjeri",
         7.43, 6.4, 5.7, 0.5, font_size=11, italic=True, color=ROSE_LIGHT, align=PP_ALIGN.CENTER)

# Centre divider text
add_text(slide, "KEY\nTAKE-\nAWAYS", 6.25, 2.8, 0.83, 1.8,
         font_size=11, bold=True, color=DARK_TEXT, align=PP_ALIGN.CENTER)

# Bottom banner
add_rect(slide, 0, 6.9, 13.333, 0.6, RGBColor(0x1A, 0x1A, 0x2E))
add_text(slide, "Noble Women's College, Manjeri  •  Women Development Cell  •  6 August 2026",
         0.3, 6.92, 12.7, 0.4, font_size=11, color=RGBColor(0xCC, 0xCC, 0xCC), align=PP_ALIGN.CENTER)

# ──────────────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/noble-womens-ppt/Noble_Womens_Awareness_PPT.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
print(f"Slide count: {len(prs.slides)}")
Running Command

cd /tmp/workspace/noble-womens-ppt && python create_ppt.py 2>&1

Running Command

python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/noble-womens-ppt/Noble_Womens_Awareness_PPT.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t[:60]) print(f'Slide {i}: {texts[:3]}') "

Your presentation is ready! Here is the download link:

Noble Womens Awareness PPT

Presentation · PPTX


What's inside — 10 slides total:
PART 1: Breaking the Taboo — Menstrual Cup Awareness (Sariga MG, 3rd Yr MBBS, GMC Manjeri)
  • Slide 1 - Title slide with purple/pink theme, event details, resource person
  • Slide 2 - What is a Menstrual Cup? (key facts, visual illustration)
  • Slide 3 - Why Choose a Menstrual Cup? (6 benefit cards: eco-friendly, cost-saving, active lifestyle, health, zero period poverty, safety)
  • Slide 4 - How to Use a Menstrual Cup (6 numbered steps)
  • Slide 5 - Myths vs Facts table (5 common myths busted with facts)
PART 2: Breast Cancer Awareness & Self Examination Workshop (Keerthana SP, 3rd Yr MBBS, GMC Manjeri)
  • Slide 6 - Title slide with navy/rose theme, event details, resource person
  • Slide 7 - Understanding Breast Cancer (stats, key facts for Indian women)
  • Slide 8 - Warning Signs & Risk Factors (side-by-side comparison)
  • Slide 9 - Breast Self-Examination (BSE) step-by-step guide (6 steps)
  • Slide 10 - Key Takeaways from both topics combined (split screen summary)
The design uses a distinct colour palette for each section (purple/pink for menstrual cup, navy/rose for breast cancer) so the audience can clearly tell the two topics apart. All content is self-explanatory with emoji icons, numbered steps, and colour-coded boxes - no references, just clean awareness content for college students.
This is a shared conversation. Sign in to Orris to start your own chat.