add color to svg
This commit is contained in:
@@ -19,6 +19,7 @@ type UserSignSession struct {
|
||||
UserEmail UserEmail
|
||||
Reset bool
|
||||
Expire int
|
||||
Colors []RGBColor
|
||||
}
|
||||
|
||||
func NewSignupResetSession(userEmail UserEmail, kp KeypadDimension, customerId CustomerId, svgInterface SvgIdInterface, reset bool) (*UserSignSession, error) {
|
||||
@@ -26,7 +27,7 @@ func NewSignupResetSession(userEmail UserEmail, kp KeypadDimension, customerId C
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
signupInterface, err := signupInterface(*loginInterface, kp)
|
||||
signupInterface, colors, err := signupInterface(*loginInterface, kp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -40,6 +41,7 @@ func NewSignupResetSession(userEmail UserEmail, kp KeypadDimension, customerId C
|
||||
UserEmail: userEmail,
|
||||
Kp: kp,
|
||||
Reset: reset,
|
||||
Colors: colors,
|
||||
}
|
||||
|
||||
return &session, nil
|
||||
@@ -140,40 +142,52 @@ func (s *UserSignSession) getSelectedKeyVals(keySelections KeySelection, userInt
|
||||
return keyVals, nil
|
||||
}
|
||||
|
||||
func signupInterface(baseUserInterface UserInterface, kp KeypadDimension) (*UserInterface, error) {
|
||||
func signupInterface(baseUserInterface UserInterface, kp KeypadDimension) (*UserInterface, []RGBColor, error) {
|
||||
// This method randomly drops sets from the base user interface so it is a square and dispersable matrix
|
||||
if kp.IsDispersable() {
|
||||
return nil, ErrKeypadIsNotDispersible
|
||||
return nil, nil, ErrKeypadIsNotDispersible
|
||||
}
|
||||
err := baseUserInterface.RandomShuffle()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
// attributes are arranged by key interfaceMatrix
|
||||
interfaceMatrix, err := baseUserInterface.InterfaceMatrix()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
// attributes are arranged by set
|
||||
attrSetView, err := util.MatrixTranspose(interfaceMatrix)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
err = util.FisherYatesShuffle[[]int](&attrSetView)
|
||||
|
||||
setIdxs := util.IdentityArray(kp.AttrsPerKey)
|
||||
if err := util.FisherYatesShuffle[int](&setIdxs); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
setIdxs = setIdxs[:kp.NumbOfKeys]
|
||||
selectedSets := make([][]int, kp.NumbOfKeys)
|
||||
selectedColors := make([]RGBColor, kp.NumbOfKeys)
|
||||
|
||||
for idx, setIdx := range setIdxs {
|
||||
selectedSets[idx] = attrSetView[setIdx]
|
||||
selectedColors[idx] = SetColors[setIdx]
|
||||
}
|
||||
// convert set view back into key view
|
||||
selectedSets, err = util.MatrixTranspose(selectedSets)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
numbOfKeys := kp.NumbOfKeys
|
||||
attrSetView = attrSetView[:numbOfKeys]
|
||||
attrSetView, err = util.MatrixTranspose(attrSetView)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
signupUserInterface := UserInterface{
|
||||
IdxInterface: util.MatrixToList(attrSetView),
|
||||
IdxInterface: util.MatrixToList(selectedSets),
|
||||
Kp: &KeypadDimension{
|
||||
AttrsPerKey: numbOfKeys,
|
||||
NumbOfKeys: numbOfKeys,
|
||||
AttrsPerKey: kp.NumbOfKeys,
|
||||
NumbOfKeys: kp.NumbOfKeys,
|
||||
},
|
||||
}
|
||||
return &signupUserInterface, nil
|
||||
return &signupUserInterface, selectedColors, nil
|
||||
}
|
||||
|
||||
func (s *UserSignSession) SignupKeypad() KeypadDimension {
|
||||
|
||||
Reference in New Issue
Block a user