#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Basit FreeCAD Render - Docker için
STEP dosyasından GIF oluşturur
"""

import sys
import os

# FreeCAD path
if os.name != 'nt':
    sys.path.append("/usr/lib/freecad-python3/lib")

import FreeCAD
import FreeCADGui
import ImportGui
from PIL import Image

def render_step_to_gif(step_file, output_gif, num_frames=36):
    """STEP dosyasından dönen GIF oluştur"""

    # Document oluştur
    doc = FreeCAD.newDocument("TempDoc")

    # STEP dosyasını yükle
    ImportGui.insert(step_file, doc.Name)

    # Ana pencereyi göster
    FreeCADGui.showMainWindow()

    # Görünümü ayarla
    view = FreeCADGui.activeDocument().activeView()
    view.viewAxonometric()
    FreeCADGui.SendMsgToActiveView("ViewFit")

    # Frame'leri oluştur
    import tempfile
    frame_dir = tempfile.mkdtemp()
    frames = []

    for i in range(num_frames):
        # Açıyı hesapla
        angle = (360.0 / num_frames) * i

        # Kamerayı Z ekseni etrafında döndür
        view.setCameraOrientation(
            FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), angle).Q
        )

        # Screenshot al
        frame_path = os.path.join(frame_dir, f"frame_{i:03d}.png")
        view.saveImage(frame_path, 800, 600, "White")
        frames.append(frame_path)

    # GIF oluştur
    images = [Image.open(f) for f in frames]
    images[0].save(
        output_gif,
        save_all=True,
        append_images=images[1:],
        duration=80,
        loop=0,
        optimize=True
    )

    # Temizlik
    for frame in frames:
        try:
            os.unlink(frame)
        except:
            pass

    try:
        os.rmdir(frame_dir)
    except:
        pass

    # Document kapat
    FreeCAD.closeDocument(doc.Name)

    return True

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 3:
        print("Usage: python3 simple_freecad_render.py <input.stp> <output.gif>")
        sys.exit(1)

    step_file = sys.argv[1]
    output_gif = sys.argv[2]

    try:
        render_step_to_gif(step_file, output_gif)
        print(f"GIF oluşturuldu: {output_gif}")
    except Exception as e:
        print(f"Hata: {e}")
        import traceback
        traceback.print_exc()
        sys.exit(1)
