當前位置: 首頁>>代碼示例>>Golang>>正文


Golang geom.Rect類代碼示例

本文整理匯總了Golang中github.com/skelterjohn/geom.Rect的典型用法代碼示例。如果您正苦於以下問題:Golang Rect類的具體用法?Golang Rect怎麽用?Golang Rect使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Rect類的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: NewImage

func NewImage(path string) (*Image, error) {
    f, ferr := os.Open(path)
    if ferr != nil {
        fmt.Fprintf(os.Stderr, "%v\n", ferr)

        return nil, fmt.Errorf("Could not open image %v", ferr)
    }
    defer f.Close()
    imConf, _, err := image.DecodeConfig(f)
    if err != nil {
        return nil, fmt.Errorf("Could not decode image", err)
    }

    im := Image{}
    im.Path = path
    pathArr := strings.Split(path, "/")
    im.Url = "/inc/" + pathArr[len(pathArr)-1]
    fmt.Println(im.Url)
    size := geom.Rect{}
    size.Min = geom.Coord{X: 0, Y: 0}
    size.Max = geom.Coord{X: float64(imConf.Width), Y: float64(imConf.Height)}
    im.Size = size

    return &im, nil
}
開發者ID:jono-macd,項目名稱:playjunk,代碼行數:25,代碼來源:image.go

示例2: Remove

func (rs *RectangleStore) Remove(box *geom.Rect, coord *geom.Coord, i interface{}) error {

    x := coord.X
    y := coord.Y
    xPrime := x + box.Width()
    yPrime := y + box.Height()

    startX := int(x) / rs.Width
    endX := int(xPrime) / rs.Width

    startY := int(y) / rs.Height
    endY := int(yPrime) / rs.Height

    for ii := startX; ii < endX; ii++ {
        for jj := startY; jj < endY; jj++ {

            if ii < 0 || jj < 0 || ii > len(rs.Values) || jj > len(rs.Values[0]) {
                continue
            }

            for kk, toDel := range rs.Values[ii][jj] {
                if toDel == i {
                    fmt.Println("removed")
                    copy(rs.Values[ii][jj][kk:], rs.Values[ii][jj][kk+1:])
                    rs.Values[ii][jj] = rs.Values[ii][jj][:len(rs.Values[ii][jj])-1]
                }
            }
        }
    }

    return nil
}
開發者ID:jono-macd,項目名稱:playjunk,代碼行數:32,代碼來源:rectanglestore.go

示例3: RemoveInside

func (me *Tree) RemoveInside(bounds geom.Rect, collection map[Item]bool) {
    if !geom.RectsIntersect(bounds, me.UpperBounds) {
        return
    }
    if me.BigElements != nil {
        for elem := range me.BigElements {
            if bounds.ContainsRect(elem.Bounds()) {
                delete(me.BigElements, elem)
                if collection != nil {
                    collection[elem] = true
                }
            }
        }
    }
    if me.Elements != nil {
        for elem := range me.Elements {
            if bounds.ContainsRect(elem.Bounds()) {
                delete(me.Elements, elem)
                if collection != nil {
                    collection[elem] = true
                }
            }
        }
    }

    for _, t := range me.Subtrees {
        if t == nil {
            continue
        }
        t.RemoveInside(bounds, collection)
    }

    return
}
開發者ID:Nightgunner5,項目名稱:geom,代碼行數:34,代碼來源:qtree.go

示例4: Add

func (rs *RectangleStore) Add(box *geom.Rect, coord *geom.Coord, i interface{}) error {

    x := coord.X
    y := coord.Y
    xPrime := x + box.Width()
    yPrime := y + box.Height()

    fmt.Println(x, y)
    fmt.Println(xPrime, yPrime)

    startX := int(x) / rs.Width
    endX := int(xPrime) / rs.Width

    startY := int(y) / rs.Height
    endY := int(yPrime) / rs.Height

    for ii := startX; ii <= endX; ii++ {
        for jj := startY; jj <= endY; jj++ {

            if ii < 0 || jj < 0 || ii >= len(rs.Values) || jj >= len(rs.Values[0]) {
                continue
            }
            //	fmt.Printf("%v, %v :: %v, %v\n", ii, jj, len(rs.Values), len(rs.Values[ii]))
            rs.Values[ii][jj] = append(rs.Values[ii][jj], i)
        }
    }

    return nil
}
開發者ID:jono-macd,項目名稱:playjunk,代碼行數:29,代碼來源:rectanglestore.go

示例5: Inside

func (rs *RectangleStore) Inside(box *geom.Rect, coord *geom.Coord) []interface{} {
    var i []interface{}

    x := coord.X
    y := coord.Y
    xPrime := x + box.Width()
    yPrime := y + box.Height()

    startX := int(x) / rs.Width
    endX := int(xPrime) / rs.Width

    startY := int(y) / rs.Height
    endY := int(yPrime) / rs.Height
    dupMap := make(map[interface{}]bool)
    for ii := startX; ii <= endX; ii++ {
        for jj := startY; jj < endY; jj++ {
            //fmt.Printf("Index %v, %v\n", ii, jj)
            if ii < 0 || jj < 0 || ii >= len(rs.Values) || jj >= len(rs.Values[0]) {
                continue
            }
            for _, val := range rs.Values[ii][jj] {
                if val != nil && !dupMap[val] {
                    dupMap[val] = true
                    i = append(i, val)
                }
            }
        }
    }

    return i
}
開發者ID:jono-macd,項目名稱:playjunk,代碼行數:31,代碼來源:rectanglestore.go

示例6: ConstructCells

func (self *Image) ConstructCells(number int, max geom.Coord) (err error) {

    size := geom.Rect{}
    size.Min = geom.Coord{X: 0, Y: 0}
    size.Max = max
    self.CellNumber = number
    self.CellSize = size
    return
}
開發者ID:jono-macd,項目名稱:playjunk,代碼行數:9,代碼來源:image.go

示例7: NewRectangleStore

func NewRectangleStore(box *geom.Rect, innerBox *geom.Rect) *RectangleStore {

    outerWidth := box.Width()
    outerHeight := box.Height()

    innerWidth := innerBox.Width()
    innerHeight := innerBox.Height()

    x := math.Floor(outerWidth / innerWidth)
    y := math.Floor(outerHeight / innerHeight)

    rs := &RectangleStore{
        Values: make([][][]interface{}, int(x)),
        Width:  int(innerWidth),
        Height: int(innerHeight),
    }

    for ii, _ := range rs.Values {
        rs.Values[ii] = make([][]interface{}, int(y))
        for jj, _ := range rs.Values[ii] {
            rs.Values[ii][jj] = make([]interface{}, InitialSize)
        }
    }
    fmt.Printf("rectangles: %+v, %+v \n", len(rs.Values), len(rs.Values[0]))
    fmt.Printf("box: %v\n", box)
    fmt.Printf("inbox: %v\n", innerBox)
    return rs
}
開發者ID:jono-macd,項目名稱:playjunk,代碼行數:28,代碼來源:rectanglestore.go

示例8: IsBig

func (me *Tree) IsBig(bounds geom.Rect) bool {
    return bounds.Width() >= me.cfg.SplitSizeRatio*me.UpperBounds.Width() ||
        bounds.Height() >= me.cfg.SplitSizeRatio*me.UpperBounds.Height()
}
開發者ID:Nightgunner5,項目名稱:geom,代碼行數:4,代碼來源:qtree.go

示例9: regrid

func (g *Grid) regrid() {

    g.reflex()

    _, minXs, maxXs := g.hflex.constrain(g.Size.X)
    _, minYs, maxYs := g.vflex.constrain(g.Size.Y)

    for child, csh := range g.ChildrenHints {
        bd := g.childrenBlockData[child]
        gridBounds := geom.Rect{
            Min: geom.Coord{
                X: minXs[bd.GridX],
                Y: minYs[bd.GridY],
            },
            Max: geom.Coord{
                X: maxXs[bd.GridX+bd.ExtraX],
                Y: maxYs[bd.GridY+bd.ExtraY],
            },
        }

        gridSizeX, gridSizeY := gridBounds.Size()
        if gridSizeX > csh.MaxSize.X {
            diff := gridSizeX - csh.MaxSize.X
            if bd.AnchorX&AnchorMin != 0 && bd.AnchorX&AnchorMax != 0 {
                gridBounds.Min.X += diff / 2
                gridBounds.Max.X -= diff / 2
            } else if bd.AnchorX&AnchorMin != 0 {
                gridBounds.Max.X -= diff
            } else if bd.AnchorX&AnchorMax != 0 {
                gridBounds.Min.X += diff
            }
        }
        if gridSizeY > csh.MaxSize.Y {
            diff := gridSizeY - csh.MaxSize.Y
            if bd.AnchorY&AnchorMin == 0 && bd.AnchorY&AnchorMax == 0 {
                gridBounds.Min.Y += diff / 2
                gridBounds.Max.Y -= diff / 2
            } else if bd.AnchorY&AnchorMin != 0 {
                gridBounds.Max.Y -= diff
            } else if bd.AnchorY&AnchorMax != 0 {
                gridBounds.Min.Y += diff
            }
        }

        gridSizeX, gridSizeY = gridBounds.Size()
        if gridSizeX > csh.PreferredSize.X {
            diff := gridSizeX - csh.PreferredSize.X
            if bd.AnchorX&AnchorMin != 0 && bd.AnchorX&AnchorMax != 0 {
                gridBounds.Min.X += diff / 2
                gridBounds.Max.X -= diff / 2
            } else if bd.AnchorX&AnchorMin != 0 {
                gridBounds.Max.X -= diff
            } else if bd.AnchorX&AnchorMax != 0 {
                gridBounds.Min.X += diff
            }
        }
        if gridSizeY > csh.PreferredSize.Y {
            diff := gridSizeY - csh.PreferredSize.Y
            if bd.AnchorY&AnchorMin == 0 && bd.AnchorY&AnchorMax == 0 {
                gridBounds.Min.Y += diff / 2
                gridBounds.Max.Y -= diff / 2
            } else if bd.AnchorY&AnchorMin != 0 {
                gridBounds.Max.Y -= diff
            } else if bd.AnchorY&AnchorMax != 0 {
                gridBounds.Min.Y += diff
            }
        }

        g.ChildrenBounds[child] = gridBounds

        gridSizeX, gridSizeY = gridBounds.Size()
        child.UserEventsIn <- uik.ResizeEvent{
            Size: geom.Coord{gridSizeX, gridSizeY},
        }
    }

    g.Invalidate()
}
開發者ID:KarateCode,項目名稱:go.uik,代碼行數:78,代碼來源:grid.go

示例10: GetLayout

func (g *GridEngine) GetLayout(size geom.Coord) (layout Layout) {

    layout = make(Layout)

    _, minXs, maxXs := g.hflex.constrain(size.X)
    _, minYs, maxYs := g.vflex.constrain(size.Y)

    // if g.Block.ID == 2 {
    // 	uik.Report("regrid", g.Block.ID, g.Size, whs, wvs)
    // }

    for child, csh := range g.childrenHints {
        bd := g.childrenGridComponents[child]
        gridBounds := geom.Rect{
            Min: geom.Coord{
                X: minXs[bd.GridX],
                Y: minYs[bd.GridY],
            },
            Max: geom.Coord{
                X: maxXs[bd.GridX+bd.ExtraX],
                Y: maxYs[bd.GridY+bd.ExtraY],
            },
        }

        gridSizeX, gridSizeY := gridBounds.Size()
        if gridSizeX > csh.MaxSize.X {
            diff := gridSizeX - csh.MaxSize.X
            if !bd.AnchorLeft && !bd.AnchorRight {
                gridBounds.Min.X += diff / 2
                gridBounds.Max.X -= diff / 2
            }
            if bd.AnchorLeft && !bd.AnchorRight {
                gridBounds.Max.X -= diff
            }
            if !bd.AnchorLeft && bd.AnchorRight {
                gridBounds.Min.X += diff
            }
        }
        if gridSizeY > csh.MaxSize.Y {
            diff := gridSizeY - csh.MaxSize.Y
            if !bd.AnchorTop && !bd.AnchorBottom {
                gridBounds.Min.Y += diff / 2
                gridBounds.Max.Y -= diff / 2
            }
            if bd.AnchorTop && !bd.AnchorBottom {
                gridBounds.Max.Y -= diff
            }
            if !bd.AnchorTop && bd.AnchorBottom {
                gridBounds.Min.Y += diff
            }
        }

        gridSizeX, gridSizeY = gridBounds.Size()
        if gridSizeX > csh.PreferredSize.X {
            diff := gridSizeX - csh.PreferredSize.X
            if !bd.AnchorLeft && !bd.AnchorRight {
                gridBounds.Min.X += diff / 2
                gridBounds.Max.X -= diff / 2
            }
            if bd.AnchorLeft && !bd.AnchorRight {
                gridBounds.Max.X -= diff
            }
            if !bd.AnchorLeft && bd.AnchorRight {
                gridBounds.Min.X += diff
            }
        }
        if gridSizeY > csh.PreferredSize.Y {
            diff := gridSizeY - csh.PreferredSize.Y
            if !bd.AnchorTop && !bd.AnchorBottom {
                gridBounds.Min.Y += diff / 2
                gridBounds.Max.Y -= diff / 2
            }
            if bd.AnchorTop && !bd.AnchorBottom {
                gridBounds.Max.Y -= diff
            }
            if !bd.AnchorTop && bd.AnchorBottom {
                gridBounds.Min.Y += diff
            }
        }

        layout[child] = gridBounds

    }

    return
}
開發者ID:skelterjohn,項目名稱:go.uik,代碼行數:86,代碼來源:grid.go


注:本文中的github.com/skelterjohn/geom.Rect類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。