! * \brief kernelReadStream() * * \param[in] fp file stream * \return kernel, or NULL on error */
| 552 | * \return kernel, or NULL on error |
| 553 | */ |
| 554 | L_KERNEL * |
| 555 | kernelReadStream(FILE *fp) |
| 556 | { |
| 557 | l_int32 sy, sx, cy, cx, i, j, ret, version, ignore; |
| 558 | L_KERNEL *kel; |
| 559 | |
| 560 | PROCNAME("kernelReadStream"); |
| 561 | |
| 562 | if (!fp) |
| 563 | return (L_KERNEL *)ERROR_PTR("stream not defined", procName, NULL); |
| 564 | |
| 565 | ret = fscanf(fp, " Kernel Version %d\n", &version); |
| 566 | if (ret != 1) |
| 567 | return (L_KERNEL *)ERROR_PTR("not a kernel file", procName, NULL); |
| 568 | if (version != KERNEL_VERSION_NUMBER) |
| 569 | return (L_KERNEL *)ERROR_PTR("invalid kernel version", procName, NULL); |
| 570 | |
| 571 | if (fscanf(fp, " sy = %d, sx = %d, cy = %d, cx = %d\n", |
| 572 | &sy, &sx, &cy, &cx) != 4) |
| 573 | return (L_KERNEL *)ERROR_PTR("dimensions not read", procName, NULL); |
| 574 | |
| 575 | if ((kel = kernelCreate(sy, sx)) == NULL) |
| 576 | return (L_KERNEL *)ERROR_PTR("kel not made", procName, NULL); |
| 577 | kernelSetOrigin(kel, cy, cx); |
| 578 | |
| 579 | for (i = 0; i < sy; i++) { |
| 580 | for (j = 0; j < sx; j++) |
| 581 | ignore = fscanf(fp, "%15f", &kel->data[i][j]); |
| 582 | ignore = fscanf(fp, "\n"); |
| 583 | } |
| 584 | ignore = fscanf(fp, "\n"); |
| 585 | |
| 586 | return kel; |
| 587 | } |
| 588 | |
| 589 | |
| 590 | /*! |
no test coverage detected