package screen

import (
	"bytes"
	"encoding/base64"
	"fmt"
	"image/jpeg"

	"github.com/kbinani/screenshot"
)

// CaptureScreen chụp màn hình chính và trả về chuỗi Base64 dạng "data:image/jpeg;base64,..."
func CaptureScreen() (string, error) {
	n := screenshot.NumActiveDisplays()
	if n <= 0 {
		return "", fmt.Errorf("no active displays found")
	}

	// Chụp màn hình chính (index 0)
	bounds := screenshot.GetDisplayBounds(0)
	img, err := screenshot.CaptureRect(bounds)
	if err != nil {
		return "", fmt.Errorf("failed to capture screen: %w", err)
	}

	var buf bytes.Buffer
	// Nén chất lượng JPEG khoảng 50% để truyền tải mượt mà qua mạng
	err = jpeg.Encode(&buf, img, &jpeg.Options{Quality: 50})
	if err != nil {
		return "", fmt.Errorf("failed to encode jpeg: %w", err)
	}

	encoded := base64.StdEncoding.EncodeToString(buf.Bytes())
	return "data:image/jpeg;base64," + encoded, nil
}
