###################################
### DM2_w24 # AGruber@tugraz.at ###
### pixel_2_vector demo         ###
###################################

##############################
import rhinoscriptsyntax as rs      ###
import random, time, sys            ###
sys.path.append("P:/")              ### add LW P:/ to rhino's default search path so_that DM2_lib.py can be found !
sys.path.append("P:/ue_04/")        ### to find some images
import DM_lib as dm                 ### 
##############################      reload (dm)

rs.ViewDisplayMode(view=None, mode="wireframe")
rs.ShowGrid(view=None, show=0)
rs.Command("cplane w t enter", 0)						# cPlane World Top

dm.PointRadius(displayModeX=0, rad=6, styl=3, verbose=0)        # 2 square; 3 round

dm.printDisplay(0)                                      # nomen est omen
rs.EnableRedraw(0)
dm.eA()
rs.Redraw()

if 1:
    grayScale = 0
    makeEleva = 2
    makeCurve = 0
    intervall = 3
    img_name = "fabian.jpg"
    img_name = "diag.png"
    img_name = "alice.jpg"
    #img_name = "michael.jpeg"
    img_name = "urs.jpg"

    img_path = img_name
    ########
    pixels = dm.getPixels(img_path, steps_x=intervall, steps_y=intervall)
    ########
    print "pixels[0]", pixels[0]
    print "pixel [0]", pixels[0][0]
    ####################################
    
    ### make 3D_grafik from pixels_lists:
    allCoords = []
    for y,row in enumerate(pixels[0:]): ### enumerate = generate counter 0,1,2,3,4,5...
        coords = []
        for x,col in enumerate(row[0:]):
            dm.esc()
            avg = int( (col[0] + col[1] + col[2])/3 ) ### average, for gray_value
            if grayScale:
                col = [avg, avg, avg]
            cor = [x, y, (255-avg)*0.01*makeEleva]
            coords.append( cor )
            if 1 or not makeCurve:
                rs.ObjectColor( rs.AddPoint( cor ), col)
        allCoords.append( coords )
        if makeCurve:
            col = dm.pntCentroid(row)
            for cor in coords:
                cor[2] *= makeCurve
            crv = rs.AddCurve( coords, makeCurve)
            rs.ObjectColor( crv, col)

        if y%15==0:
            rs.ZoomExtents()
            rs.Redraw()
if 0:
    for coords in allCoords:
        rs.AddCurve( coords, 1)
