3 Commits

Author SHA1 Message Date
Raum0x2A
86bc493ead Updated - v1.0.0 2021-05-26 15:15:13 -06:00
Raum0x2A
3cfae880ee Updated - v1.0.0 2021-05-26 15:13:30 -06:00
Raum0x2A
b41f25646d Split up Create banner finction
nmslib.CreateBanner() now calls nmslib.GenRawBanner() for the
majority of processing createbanner now just calls the gen func
and saves the file.

GenRawBanner() returns an image.Image type for more processing by
another function. this will be used for upcoming features.

tests have been updated as needed

upddated go.mod and go.sum
2021-05-24 13:11:56 -06:00
5 changed files with 108 additions and 56 deletions

107
README.md
View File

@@ -1,27 +1,27 @@
# NMSlib
**master Branch** : ![](https://gitlab.com/Raum0x2A/nmslib/badges/master/pipeline.svg)
**develop Branch** : ![](https://gitlab.com/Raum0x2A/nmslib/badges/develop/pipeline.svg)
[![](https://img.shields.io/badge/License%20-MIT-green)](COPYING)
[![GoDoc](https://godoc.org/gitlab.com/Raum0x2A/nmslib?status.svg)](https://godoc.org/gitlab.com/Raum0x2A/nmslib)
[![](https://img.shields.io/gitlab/pipeline/Raum0x2A/nmslib/master?label=Master&logo=go)](https://gitlab.com/Raum0x2A/nmslib)
[![](https://img.shields.io/gitlab/pipeline/Raum0x2A/nmslib/develop?label=Develop&logo=go)](https://gitlab.com/Raum0x2A/nmslib/-/tree/develop)
[![](https://img.shields.io/badge/Release-v1.0.0-blue?style=flat&logo=go)](https://gitlab.com/Raum0x2A/nmslib/-/releases/v1.0.0)
NMSlib is a GoLang package for dealing with converting Galactic coordinates to Portal codes and vice versa.
NMSlib also translates in game languages (Korvax, Gek Vy'Keen and Atlas) to english, and create portal banners.
[GoDoc](https://pkg.go.dev/gitlab.com/Raum0x2A/nmslib#section-documentation)
## Installation
To install this module use `go get`
```bash
```golang
go get -u gitlab.com/Raum0x2A/nmslib
```
## Usage
**Example:**
### Example:
```golang
package main
@@ -40,20 +40,26 @@ func main() {
}
fmt.Printf("Input:\t%s\nOutput:\t%s\n", portalcode, galacticCoords)
nmslib.CreateBanner(portalcode, "./NMH-BlueDream.png", 0)
nmslib.CreateBanner(RndPortal(), "./Random.png", 0)
g2p, err := nmslib.Gc2p("014C:0077:06DA:01F2", 2)
if err != nil {
panic(err)
}
fmt.Printf("Input:\t014C:0077:06DA:01F2\nOutput:\t%s\n", g2p)
_ := nmslib.CreateBanner(portalcode, "./NMH-BlueDream.png", 0)
_ := nmslib.CreateBanner(nmslib.RndPortal(), "./Random.png", 0)
fmt.Println(nmslib.Translate{Word: "KIHTYOMOLES"}.Kor2Eng())
korvax := nmslib.Translate{Word: "Contraband"}
fmt.Println(korvax.Eng2Kor())
fmt.Println(nmslib.Translate{Lang: "korvax"}.ToEng("KIHTYOMOLES"))
korvax := nmslib.Translate{"english"}
fmt.Println(korvax.ToKorvax("Contraband"))
}
```
### Creating a Glyph banner with CreateBanner()
## Creating a Glyph banner with CreateBanner()
This function takes 3 parameters:
This function takes 3 parameters and reurns an error
* portalcode: 12 char hex string of portal location
* savename: Save location and name
@@ -69,7 +75,10 @@ This function takes 3 parameters:
Horizontal Layout for the NMH Capital planet [Blue Dream (aka Omins XI)](https://nomanssky.fandom.com/wiki/Omins_XI) in the [Notric-Lis XIII](https://nomanssky.fandom.com/wiki/Notric-Lis_XIII) system in the [Lahanhar Conflux](https://nomanssky.fandom.com/wiki/Lahanhar_Conflux) region
```golang
nmslib.CreateBanner("21F2F8EDB94D", "NMH-BlueDream.png", 0)
err := nmslib.CreateBanner("21F2F8EDB94D", "NMH-BlueDream.png", 0)
if err !=nil {
panic(err)
}
```
![](NMH-BlueDream.png)
@@ -77,16 +86,18 @@ nmslib.CreateBanner("21F2F8EDB94D", "NMH-BlueDream.png", 0)
Vertical layout for a random address
```golang
nmslib.CreateBanner(nmslib.RndPortal(), "ranportal.png", 11)
err := nmslib.CreateBanner(nmslib.RndPortal(), "ranportal.png", 11)
if err != nil {
panic(err)
}
```
![](ranportal_scaled.png)
_Note: Images shown in readme.md have been scaled down in gimp._
_Note: Image shown in readme.md's vertical example have been scaled down in gimp for easier viewing on gitlab._
_Original Vertical: 256x3072px_
_Original ranportal.png: 256x3072px_
_Original: Horizontal: 3072x256px_
### Converting Portal code to Galactic address with P2gc()
@@ -138,15 +149,17 @@ This function takes only 1 parameter and returns a string
* Word: Any known Atlas word (ex. Paka)
_note: Translating to english will **always** result in the lowercase equivilent word_
**Example:**
```golang
fmt.Println(nmslib.Translate{Word: "Paka"}.Atl2Eng())
fmt.Println(nmslib.Translate{Lang: "atlas"}.ToEng("Paka"))
```
Output:
``Awake``
``awake``
### Translate English to Korvax with Eng2Korvax()
@@ -157,8 +170,8 @@ This function takes only 1 parameter and returns a string
**Example:**
```golang
korvax := nmslib.Translate{Word: "Contraband"}
fmt.Println(korvax.Eng2Kor())
korvax := nmslib.Translate{"english"}
fmt.Println(korvax.ToKorvax("Contraband"))
```
Output:
@@ -168,38 +181,54 @@ Output:
### Language commands
Gek:
- ``Translate{Word: string}.Gek2Eng()``
- ``Translate{Word: string}.Eng2Gek()``
- ``Translate{Lang: ``string``}.ToEng(``string``)``
- ``Translate{Lang: ``string``}.ToKorvax(``string``)``
- ``Translate{Lang: ``string``}.ToGek(``string``)``
- ``Translate{Lang: ``string``}.ToVykeen(``string``)``
- ``Translate{Lang: ``string``}.ToAtlat(``string``)``
Korvax:
- ``Translate{Word: string}.Kor2Eng()``
- ``Translate{Word: string}.Eng2Kor()``
#### Possible Lang string options
Vy'keen:
- ``Translate{Word: string}.Vyk2Eng()``
- ``Translate{Word: string}.Eng2Vyk()``
- ``"english"``
- ``"korvax"``
- ``"gek"``
- ``"vykeen"``
- ``"atlas"``
Atlas:
- ``Translate{Word: string}.Atl2Eng()``
- ``Translate{Word: string}.Eng2Atl()``
## Random Portal address
### Create a random portal address
Generate random portal codes
- Atlas Station
- Black Hole
- Random address
All random address created will default to the planet index 1 to help ensure there the address is valid
**Example:**
```golang
fmt.Println(nmslib.RndPortal())
fmt.Println(nmslib.RndPortal())
fmt.Println(nmslib.RndAtlas())
fmt.Println(nmslib.RndBH())
```
**Output:**
**Output examples:**
``10EFABDEA373``
``11EAB355FC8E``
## License
[MIT](COPYING)
``107AC0E190D1``
``10796D57AE15``
<hr>
## A Proud member of NMH Hub
### [![Official Page](https://static.wikia.nocookie.net/nomanssky_gamepedia/images/5/5a/NMH_Banner_Hub.png/revision/latest/scale-to-width-down/85?cb=20201210044657)](https://nomanssky.fandom.com/wiki/No_Man%27s_High_Hub) [![Discord Server](https://img.shields.io/badge/Discord-Invite-blue?&logo=discord&logoColor=white)](https://discord.gg/mhRxf29hns)

View File

@@ -23,19 +23,40 @@ var opt int
* note first of the 2 bits sets the layout, the second bit sets the glyph color
*/
func CreateBanner(portalhex string, savename string, opt int) (err error) {
out, err := GenRawBanner(portalhex, opt)
if err != nil {
return
}
gg.SavePNG(savename+".png", out)
//gg.SaveJPG(savename+".jpg", out, 50)
return
}
/*GenRawBanner - Returns image.Image of genorated image
Requires 2 vars and returns image.Image (raw image data) and an error
var portalex string: Portal Glyph hex string
var opt int
00 sets horizontal banner in light mode [ 00 || 0 ]
01 sets horizontal banner in dark mode [ 01 || 1 ]
10 sets vertical banner in light mode
11 sets vertical banner in dark mode
* note first of the 2 bits sets the layout, the second bit sets the glyph color
*/
func GenRawBanner(portalhex string, layout int) (portalbanner image.Image, err error) {
var GlyphHex [12]int64
var glyphImg [12]string
var mode string
var imgArray [12]image.Image
//Set light or dark mode glyphs
if opt == 00 || opt == 10 {
if layout == 00 || layout == 10 {
mode = "light"
} else if opt == 01 || opt == 11 {
} else if layout == 01 || layout == 11 {
mode = "dark"
} else {
// if opt is an invalid option (ie. not a 2 bit binary number default to classic mode/layout
opt = 0
// if layout is an invalid option (ie. not a 2 bit binary number default to classic mode/layout
layout = 0
mode = "light"
}
@@ -45,7 +66,7 @@ func CreateBanner(portalhex string, savename string, opt int) (err error) {
for i := 0; i < len(portalhex); i++ {
GlyphHex[i], err = strconv.ParseInt(portalhex[i:int(i+1)], 16, 16)
if err != nil {
return errors.New("string provided is not hexadecimal ([0-9][A-F])")
return nil, errors.New("string provided is not hexadecimal ([0-9][A-F])")
}
}
@@ -58,11 +79,11 @@ func CreateBanner(portalhex string, savename string, opt int) (err error) {
for k := 0; k < len(glyphImg); k++ {
data, err := Asset(glyphImg[k])
if err != nil {
return errors.New("can not load images from assets: " + glyphImg[k])
return nil, errors.New("can not load images from assets: " + glyphImg[k])
}
err = ioutil.WriteFile(NmsTemp+"/"+glyphImg[k], []byte(data), 0644)
if err != nil {
return errors.New("can not write file to temp directory")
return nil, errors.New("can not write file to temp directory")
}
}
@@ -70,7 +91,7 @@ func CreateBanner(portalhex string, savename string, opt int) (err error) {
for iter := 0; iter < 12; iter++ {
imgArray[iter], err = gg.LoadPNG(NmsTemp + "/" + glyphImg[iter])
if err != nil {
return errors.New("can not read glyph " + glyphImg[iter])
return nil, errors.New("can not read glyph " + glyphImg[iter])
}
}
@@ -78,28 +99,30 @@ func CreateBanner(portalhex string, savename string, opt int) (err error) {
// get image size of first glyph, all glyphs have the same X && Y dimension so we only need to measure one.
imgDim := imgArray[0].Bounds().Size()
//Set Layout
//classic horizontal layout
if opt == 01 || opt == 00 {
if layout == 01 || layout == 00 {
imgWidth := imgDim.X * 12
imgHeight := imgDim.Y
concat := gg.NewContext(imgWidth, imgHeight)
for a := 0; a < 12; a++ {
concat.DrawImage(imgArray[a], imgDim.X*a, 0)
}
concat.SavePNG(savename)
return concat.Image(), nil
}
//Vertical layout
if opt == 10 || opt == 11 {
if layout == 10 || layout == 11 {
imgWidth := imgDim.X
imgHeight := imgDim.Y * 12
concat := gg.NewContext(imgWidth, imgHeight)
for a := 0; a < 12; a++ {
concat.DrawImage(imgArray[a], 0, imgDim.Y*a)
}
concat.SavePNG(savename)
return concat.Image(), nil
}
} else {
return errors.New("portalcode must be exactly 12 chars")
return nil, errors.New("portalcode must be exactly 12 chars")
}
return
}

2
go.mod
View File

@@ -3,7 +3,7 @@ module gitlab.com/Raum0x2A/nmslib
go 1.16
require (
github.com/fogleman/gg v1.3.0
github.com/fogleman/gg v1.3.1-0.20210131172831-af4cd580789b
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
golang.org/x/image v0.0.0-20210504121937-7319ad40d33e // indirect
)

4
go.sum
View File

@@ -1,5 +1,5 @@
github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8=
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fogleman/gg v1.3.1-0.20210131172831-af4cd580789b h1:gqOBIAmkc/ZxXzFrM4wTub7tD0xYaOsaOQ5wOA74lJQ=
github.com/fogleman/gg v1.3.1-0.20210131172831-af4cd580789b/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
golang.org/x/image v0.0.0-20210504121937-7319ad40d33e h1:PzJMNfFQx+QO9hrC1GwZ4BoPGeNGhfeQEgcQFArEjPk=

View File

@@ -10,7 +10,7 @@ func TestCreateBanner(t *testing.T) {
rp := "21F2F8EDB94D"
//rp := RndPortal()
fileout := "./test.png"
fileout := "./test"
err := CreateBanner(rp, fileout, 0)
if err != nil {