MCPcopy Create free account
hub / github.com/IENT/YUView / getChannelPosition

Method getChannelPosition

YUViewLib/src/video/rgb/PixelFormatRGB.cpp:139–186  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

137}
138
139int 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
188Channel PixelFormatRGB::getChannelAtPosition(int position) const
189{

Callers 6

calculateDifferenceMethod · 0.80
convertRGBToARGBFunction · 0.80
convertRGBPlaneToARGBFunction · 0.80

Calls

no outgoing calls

Tested by 1