Quoting Arian Sanusi <ar...@sanusi.de>:

> I want to write a little script that takes an image and processes it
> with gimp-curves-spline. However i want to load the parameters for the
> procedure from a file or alternatively from previous settings of this
> filter, so I don't have to edit the script itself everytime i change the
> parameters. Could you give me a hint to one of those?

The following code should provide enough of a hint to get you started.  
It is functional but is not very robust (and you might prefer to  
retrieve all the channels in one pass).

; Retrieve the curve settings from a file which was saved with the
; "Export settings to file..." command in the Curves Menu.

; filename should be a fully qualified pathname of the file.
; channel should be one of (include the apostrophe):
;   'value
;   'red
;   'green
;   'blue
;   'alpha
;
; mode should be "0" to retrieve the spline (smooth) curve points
;      should be "1" to retrieve the freehand y-coordinates

; Return value is list of either
;   (number-of-spline-coordinates x0 y0 x1 y1 ... xN yN)
; or
;   (number-of-freehand-coordinates y0 y1 y2 ... yN)

(define (retrieve-curve filename channel mode)
   (let* (
       (port (open-input-file filename))
       (cts-curve 0)
       (cts-channel 0)
       )
     (when (eqv? (peek-char port) #\#)
       (read-char port)
       (while (not (eqv? (read-char port) #\newline))
         )
       (read-char port)
       )
     (read port) ; time
     (set! cts-channel (cadr (read port)))
     (set! cts-curve (cdr (read port)))
     (while (not (eqv? cts-channel channel))
       (read port) ; time
       (set! cts-channel (cadr (read port)))
       (set! cts-curve (cdr (read port)))
       )
     (close-input-port port)
     (if (= mode 0)
       (cdaddr cts-curve) ; smooth
       (cdar (cddddr cts-curve)) ; freehand
       )
     )
   )


_______________________________________________
Gimp-user mailing list
Gimp-user@lists.XCF.Berkeley.EDU
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-user

Reply via email to