| 137 | } |
| 138 | |
| 139 | int PixelFormatRGB::getChannelPosition(Channel channel) const |
| 140 | { |
| 141 | if (channel == Channel::Alpha) |
| 142 | { |
| 143 | switch (this->alphaMode) |
| 144 | { |
| 145 | case AlphaMode::First: |
| 146 | return 0; |
| 147 | case AlphaMode::Last: |
| 148 | return 3; |
| 149 | default: |
| 150 | return -1; |
| 151 | } |
| 152 | } |
| 153 | |
| 154 | auto rgbIdx = 0; |
| 155 | if (channel == Channel::Red) |
| 156 | { |
| 157 | if (this->channelOrder == ChannelOrder::RGB || this->channelOrder == ChannelOrder::RBG) |
| 158 | rgbIdx = 0; |
| 159 | if (this->channelOrder == ChannelOrder::GRB || this->channelOrder == ChannelOrder::BRG) |
| 160 | rgbIdx = 1; |
| 161 | if (this->channelOrder == ChannelOrder::GBR || this->channelOrder == ChannelOrder::BGR) |
| 162 | rgbIdx = 2; |
| 163 | } |
| 164 | else if (channel == Channel::Green) |
| 165 | { |
| 166 | if (this->channelOrder == ChannelOrder::GRB || this->channelOrder == ChannelOrder::GBR) |
| 167 | rgbIdx = 0; |
| 168 | if (this->channelOrder == ChannelOrder::RGB || this->channelOrder == ChannelOrder::BGR) |
| 169 | rgbIdx = 1; |
| 170 | if (this->channelOrder == ChannelOrder::RBG || this->channelOrder == ChannelOrder::BRG) |
| 171 | rgbIdx = 2; |
| 172 | } |
| 173 | else if (channel == Channel::Blue) |
| 174 | { |
| 175 | if (this->channelOrder == ChannelOrder::BGR || this->channelOrder == ChannelOrder::BRG) |
| 176 | rgbIdx = 0; |
| 177 | if (this->channelOrder == ChannelOrder::RBG || this->channelOrder == ChannelOrder::GBR) |
| 178 | rgbIdx = 1; |
| 179 | if (this->channelOrder == ChannelOrder::RGB || this->channelOrder == ChannelOrder::GRB) |
| 180 | rgbIdx = 2; |
| 181 | } |
| 182 | |
| 183 | if (this->alphaMode == AlphaMode::First) |
| 184 | return rgbIdx + 1; |
| 185 | return rgbIdx; |
| 186 | } |
| 187 | |
| 188 | Channel PixelFormatRGB::getChannelAtPosition(int position) const |
| 189 | { |
no outgoing calls