using pv::data::decode::Annotation;
GSList *l, *ll;
- int row, ann_class;
+ int row, ann_class, idx = 0;
struct srd_decoder_annotation_row *ann_row;
+ struct srd_decoder *decc;
assert(pdata);
assert(decoder);
Annotation a = Annotation(pdata);
- const shared_ptr<decode::Decoder> &dec = *d->stack().begin();
+ decc = pdata->pdo->di->decoder;
+ BOOST_FOREACH(const shared_ptr<decode::Decoder> &dec, d->stack()) {
+ if (dec->decoder() == decc)
+ break;
+ idx++;
+ }
+ a.set_pd_index(idx);
- for (l = dec->decoder()->annotation_rows, row = 0; l;
- l = l->next, row++)
+ for (l = decc->annotation_rows, row = 0; l; l = l->next, row++)
{
ann_row = (struct srd_decoder_annotation_row *)l->data;
vector<Annotation> annotations(_decoder_stack->annotations());
BOOST_FOREACH(const Annotation &a, annotations) {
+ // Every stacked PD is 60 pixels further down.
+ int y_stack_offset = a.pd_index() * 60;
+
// Every annotation row is 20 pixels further down.
int y_ann_row_offset = a.row() * 20;
draw_annotation(a, p, get_text_colour(), h, left, right,
samples_per_pixel, pixels_offset,
- y + y_ann_row_offset);
+ y + y_stack_offset + y_ann_row_offset);
}
draw_unresolved_period(p, h, left, right,