Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
604b450
Simplify fill-color-2 reducer logic
adroitwhiz Apr 14, 2020
018958c
Combine fill-color and fill-color-2 reducers
adroitwhiz Apr 14, 2020
7bab4d5
Abstract color reducer into reducer-generator
adroitwhiz Apr 14, 2020
1017911
color -> style, move selection gradient into it
adroitwhiz Apr 15, 2020
dc430a0
Fix setting of stroke colors in bitmap mode
adroitwhiz May 25, 2020
1ecab99
Make style-path helpers generic over fill & stroke
adroitwhiz Apr 15, 2020
f8da455
Use createGradientObject in applyGradientTypeToSelection
adroitwhiz Jul 23, 2020
a23fabd
Fix fill color reducer test
adroitwhiz Jul 9, 2020
6094953
Wire up stroke gradient controls
adroitwhiz Apr 15, 2020
2df2283
Update color reducer tests
adroitwhiz Apr 15, 2020
df1989d
Add gradients to vector shape tools
adroitwhiz May 25, 2020
2eab504
Add hit result to hovered item data
adroitwhiz Jun 5, 2020
c81853b
Make fill tool work for outlines
adroitwhiz Jun 5, 2020
f625109
Make styleShape more flexible
adroitwhiz Jul 9, 2020
9f77faf
Don't set color in bitmap shape onSelectionChanged
adroitwhiz Jun 9, 2020
a304dea
Add gradients to bitmap shape tools
adroitwhiz Jun 9, 2020
6ab7b4c
Remove unnecessary bitmapMode params
adroitwhiz Jun 19, 2020
696e355
Add GradientToolsModes for shouldShowGradientTools
adroitwhiz Jul 6, 2020
f0b1881
Fix changing gradient strokes to/from null
adroitwhiz Jul 16, 2020
689532f
Enforce minimum gradient size
adroitwhiz Jul 23, 2020
98daa5e
Gradients in line mode
adroitwhiz Jul 23, 2020
852eefc
Fix gradient outlines with 0 width in select mode
adroitwhiz Jul 28, 2020
cca0832
Fix zero-width-outline logic
adroitwhiz Jul 28, 2020
3795999
Enforce minimum gradient width for fill tool
adroitwhiz Jul 28, 2020
272a10c
Also enforce minimum gradient size in select mode
adroitwhiz Jul 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import Popover from 'react-popover';
import {defineMessages, injectIntl, intlShape} from 'react-intl';

import ColorButton from './color-button/color-button.jsx';
import ColorPicker from '../containers/color-picker.jsx';
Expand All @@ -10,61 +9,55 @@ import Label from './forms/label.jsx';

import GradientTypes from '../lib/gradient-types';

const messages = defineMessages({
fill: {
id: 'paint.paintEditor.fill',
description: 'Label for the color picker for the fill color',
defaultMessage: 'Fill'
}
});

const FillColorIndicatorComponent = props => (
const ColorIndicatorComponent = props => (
<InputGroup
className={props.className}
disabled={props.disabled}
>
<Popover
body={
<ColorPicker
color={props.fillColor}
color2={props.fillColor2}
color={props.color}
color2={props.color2}
gradientType={props.gradientType}
shouldShowGradientTools={props.shouldShowGradientTools}
onChangeColor={props.onChangeFillColor}
onChangeColor={props.onChangeColor}
onChangeGradientType={props.onChangeGradientType}
onSwap={props.onSwap}
/>
}
isOpen={props.fillColorModalVisible}
isOpen={props.colorModalVisible}
preferPlace="below"
onOuterAction={props.onCloseFillColor}
onOuterAction={props.onCloseColor}
>
<Label text={props.intl.formatMessage(messages.fill)}>
<Label text={props.label}>
<ColorButton
color={props.fillColor}
color2={props.fillColor2}
color={props.color}
color2={props.color2}
gradientType={props.gradientType}
onClick={props.onOpenFillColor}
onClick={props.onOpenColor}
outline={props.outline}
/>
</Label>
</Popover>
</InputGroup>
);

FillColorIndicatorComponent.propTypes = {
ColorIndicatorComponent.propTypes = {
className: PropTypes.string,
disabled: PropTypes.bool.isRequired,
fillColor: PropTypes.string,
fillColor2: PropTypes.string,
fillColorModalVisible: PropTypes.bool.isRequired,
color: PropTypes.string,
color2: PropTypes.string,
colorModalVisible: PropTypes.bool.isRequired,
gradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,
intl: intlShape,
onChangeFillColor: PropTypes.func.isRequired,
label: PropTypes.string.isRequired,
onChangeColor: PropTypes.func.isRequired,
onChangeGradientType: PropTypes.func.isRequired,
onCloseFillColor: PropTypes.func.isRequired,
onOpenFillColor: PropTypes.func.isRequired,
onCloseColor: PropTypes.func.isRequired,
onOpenColor: PropTypes.func.isRequired,
onSwap: PropTypes.func.isRequired,
outline: PropTypes.bool.isRequired,
shouldShowGradientTools: PropTypes.bool.isRequired
};

export default injectIntl(FillColorIndicatorComponent);
export default ColorIndicatorComponent;
65 changes: 0 additions & 65 deletions src/components/stroke-color-indicator.jsx

This file was deleted.

7 changes: 3 additions & 4 deletions src/containers/bit-brush-mode.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@ import bindAll from 'lodash.bindall';
import Modes from '../lib/modes';
import {MIXED} from '../helper/style-path';

import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-color';
import {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';
import {changeMode} from '../reducers/modes';
import {clearSelectedItems} from '../reducers/selected-items';
import {clearSelection} from '../helper/selection';
import {clearGradient} from '../reducers/selection-gradient-type';

import BitBrushModeComponent from '../components/bit-brush-mode/bit-brush-mode.jsx';
import BitBrushTool from '../helper/bit-tools/brush-tool';
Expand Down Expand Up @@ -94,15 +93,15 @@ BitBrushMode.propTypes = {

const mapStateToProps = state => ({
bitBrushSize: state.scratchPaint.bitBrushSize,
color: state.scratchPaint.color.fillColor,
color: state.scratchPaint.color.fillColor.primary,
isBitBrushModeActive: state.scratchPaint.mode === Modes.BIT_BRUSH
});
const mapDispatchToProps = dispatch => ({
clearSelectedItems: () => {
dispatch(clearSelectedItems());
},
clearGradient: () => {
dispatch(clearGradient());
dispatch(clearFillGradient());
},
handleMouseDown: () => {
dispatch(changeMode(Modes.BIT_BRUSH));
Expand Down
21 changes: 10 additions & 11 deletions src/containers/bit-fill-mode.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import GradientTypes from '../lib/gradient-types';

import FillModeComponent from '../components/bit-fill-mode/bit-fill-mode.jsx';

import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-color';
import {changeFillColor2} from '../reducers/fill-color-2';
import {changeFillColor, changeFillColor2, DEFAULT_COLOR} from '../reducers/fill-style';
import {changeMode} from '../reducers/modes';
import {clearSelectedItems} from '../reducers/selected-items';
import {changeGradientType} from '../reducers/fill-mode-gradient-type';
Expand Down Expand Up @@ -66,10 +65,10 @@ class BitFillMode extends React.Component {
this.props.onChangeFillColor(DEFAULT_COLOR, 0);
}
const gradientType = this.props.fillModeGradientType ?
this.props.fillModeGradientType : this.props.selectModeGradientType;
this.props.fillModeGradientType : this.props.styleGradientType;
let color2 = this.props.color2;
if (gradientType !== this.props.selectModeGradientType) {
if (this.props.selectModeGradientType === GradientTypes.SOLID) {
if (gradientType !== this.props.styleGradientType) {
if (this.props.styleGradientType === GradientTypes.SOLID) {
color2 = getRotatedColor(color);
this.props.onChangeFillColor(color2, 1);
}
Expand Down Expand Up @@ -105,20 +104,20 @@ BitFillMode.propTypes = {
clearSelectedItems: PropTypes.func.isRequired,
color: PropTypes.string,
color2: PropTypes.string,
styleGradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired,
fillModeGradientType: PropTypes.oneOf(Object.keys(GradientTypes)),
handleMouseDown: PropTypes.func.isRequired,
isFillModeActive: PropTypes.bool.isRequired,
onChangeFillColor: PropTypes.func.isRequired,
onUpdateImage: PropTypes.func.isRequired,
selectModeGradientType: PropTypes.oneOf(Object.keys(GradientTypes)).isRequired
onUpdateImage: PropTypes.func.isRequired
};

const mapStateToProps = state => ({
fillModeGradientType: state.scratchPaint.fillMode.gradientType, // Last user-selected gradient type
color: state.scratchPaint.color.fillColor,
color2: state.scratchPaint.color.fillColor2,
isFillModeActive: state.scratchPaint.mode === Modes.BIT_FILL,
selectModeGradientType: state.scratchPaint.color.gradientType
color: state.scratchPaint.color.fillColor.primary,
color2: state.scratchPaint.color.fillColor.secondary,
styleGradientType: state.scratchPaint.color.fillColor.gradientType,
isFillModeActive: state.scratchPaint.mode === Modes.BIT_FILL
});
const mapDispatchToProps = dispatch => ({
clearSelectedItems: () => {
Expand Down
7 changes: 3 additions & 4 deletions src/containers/bit-line-mode.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@ import bindAll from 'lodash.bindall';
import Modes from '../lib/modes';
import {MIXED} from '../helper/style-path';

import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-color';
import {changeFillColor, clearFillGradient, DEFAULT_COLOR} from '../reducers/fill-style';
import {changeMode} from '../reducers/modes';
import {clearSelectedItems} from '../reducers/selected-items';
import {clearSelection} from '../helper/selection';
import {clearGradient} from '../reducers/selection-gradient-type';

import BitLineModeComponent from '../components/bit-line-mode/bit-line-mode.jsx';
import BitLineTool from '../helper/bit-tools/line-tool';
Expand Down Expand Up @@ -94,15 +93,15 @@ BitLineMode.propTypes = {

const mapStateToProps = state => ({
bitBrushSize: state.scratchPaint.bitBrushSize,
color: state.scratchPaint.color.fillColor,
color: state.scratchPaint.color.fillColor.primary,
isBitLineModeActive: state.scratchPaint.mode === Modes.BIT_LINE
});
const mapDispatchToProps = dispatch => ({
clearSelectedItems: () => {
dispatch(clearSelectedItems());
},
clearGradient: () => {
dispatch(clearGradient());
dispatch(clearFillGradient());
},
handleMouseDown: () => {
dispatch(changeMode(Modes.BIT_LINE));
Expand Down
13 changes: 4 additions & 9 deletions src/containers/bit-oval-mode.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import React from 'react';
import {connect} from 'react-redux';
import bindAll from 'lodash.bindall';
import Modes from '../lib/modes';
import ColorStyleProptype from '../lib/color-style-proptype';
import {MIXED} from '../helper/style-path';

import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-color';
import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-style';
import {changeMode} from '../reducers/modes';
import {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';
import {clearGradient} from '../reducers/selection-gradient-type';
import {setCursor} from '../reducers/cursor';

import {clearSelection, getSelectedLeafItems} from '../helper/selection';
Expand Down Expand Up @@ -62,9 +62,8 @@ class BitOvalMode extends React.Component {
}
activateTool () {
clearSelection(this.props.clearSelectedItems);
this.props.clearGradient();
// Force the default brush color if fill is MIXED or transparent
const fillColorPresent = this.props.color !== MIXED && this.props.color !== null;
const fillColorPresent = this.props.color.primary !== MIXED && this.props.color.primary !== null;
if (!fillColorPresent) {
this.props.onChangeFillColor(DEFAULT_COLOR);
}
Expand Down Expand Up @@ -95,9 +94,8 @@ class BitOvalMode extends React.Component {
}

BitOvalMode.propTypes = {
clearGradient: PropTypes.func.isRequired,
clearSelectedItems: PropTypes.func.isRequired,
color: PropTypes.string,
color: ColorStyleProptype,
filled: PropTypes.bool,
handleMouseDown: PropTypes.func.isRequired,
isOvalModeActive: PropTypes.bool.isRequired,
Expand All @@ -122,9 +120,6 @@ const mapDispatchToProps = dispatch => ({
clearSelectedItems: () => {
dispatch(clearSelectedItems());
},
clearGradient: () => {
dispatch(clearGradient());
},
setCursor: cursorString => {
dispatch(setCursor(cursorString));
},
Expand Down
13 changes: 4 additions & 9 deletions src/containers/bit-rect-mode.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import React from 'react';
import {connect} from 'react-redux';
import bindAll from 'lodash.bindall';
import Modes from '../lib/modes';
import ColorStyleProptype from '../lib/color-style-proptype';
import {MIXED} from '../helper/style-path';

import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-color';
import {changeFillColor, DEFAULT_COLOR} from '../reducers/fill-style';
import {changeMode} from '../reducers/modes';
import {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';
import {clearGradient} from '../reducers/selection-gradient-type';
import {setCursor} from '../reducers/cursor';

import {clearSelection, getSelectedLeafItems} from '../helper/selection';
Expand Down Expand Up @@ -62,9 +62,8 @@ class BitRectMode extends React.Component {
}
activateTool () {
clearSelection(this.props.clearSelectedItems);
this.props.clearGradient();
// Force the default brush color if fill is MIXED or transparent
const fillColorPresent = this.props.color !== MIXED && this.props.color !== null;
const fillColorPresent = this.props.color.primary !== MIXED && this.props.color.primary !== null;
if (!fillColorPresent) {
this.props.onChangeFillColor(DEFAULT_COLOR);
}
Expand Down Expand Up @@ -95,9 +94,8 @@ class BitRectMode extends React.Component {
}

BitRectMode.propTypes = {
clearGradient: PropTypes.func.isRequired,
clearSelectedItems: PropTypes.func.isRequired,
color: PropTypes.string,
color: ColorStyleProptype,
filled: PropTypes.bool,
handleMouseDown: PropTypes.func.isRequired,
isRectModeActive: PropTypes.bool.isRequired,
Expand All @@ -122,9 +120,6 @@ const mapDispatchToProps = dispatch => ({
clearSelectedItems: () => {
dispatch(clearSelectedItems());
},
clearGradient: () => {
dispatch(clearGradient());
},
setCursor: cursorString => {
dispatch(setCursor(cursorString));
},
Expand Down
4 changes: 2 additions & 2 deletions src/containers/bit-select-mode.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import {connect} from 'react-redux';
import bindAll from 'lodash.bindall';
import Modes from '../lib/modes';

import {clearFillGradient} from '../reducers/fill-style';
import {changeMode} from '../reducers/modes';
import {clearSelectedItems, setSelectedItems} from '../reducers/selected-items';
import {clearGradient} from '../reducers/selection-gradient-type';
import {setCursor} from '../reducers/cursor';

import {getSelectedLeafItems} from '../helper/selection';
Expand Down Expand Up @@ -88,7 +88,7 @@ const mapStateToProps = state => ({
});
const mapDispatchToProps = dispatch => ({
clearGradient: () => {
dispatch(clearGradient());
dispatch(clearFillGradient());
},
clearSelectedItems: () => {
dispatch(clearSelectedItems());
Expand Down
Loading